Arazoaren muina da frontend-ek eta backend-ek sarritan laguntza-maila desberdinak ematen dituztela HTTP protokoloari, baina, aldi berean, erabiltzaile ezberdinen eskaerak kanal komun batean biltzen dituzte. Frontend-a jasotzeko eskaerak eta backend-a prozesatzeko eskaerak konektatzeko, iraupen luzeko TCP konexio bat ezartzen da, zeinaren bidez erabiltzaileen eskaerak transmititzen dira, katean zehar bata bestearen atzetik transmitituta, HTTP protokoloaren bidez bereizita. Eskaerak bereizteko, "Edukia-luzera" goiburuak (eskaeraren datuen guztizko tamaina zehazten du) eta "
Arazoa sortzen da frontend-ak "Content-Length" bakarrik onartzen badu baina "Transfer-Encoding: chunked" alde batera uzten badu (adibidez, Akamai CDN-k hau egin zuen) edo alderantziz. Transfer-Encoding: chunked bi aldeetan onartzen bada, HTTP goiburuko analizatzaileen ezarpen-ezaugarriak eraso baterako erabil daitezke (adibidez, frontend-ak "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked" bezalako lerroak alde batera uzten dituenean. β, βTransfer-kodifikazioaβ :[tab]zatitutaβ, "X: X[\n]Transferentzia-kodifikazioa: zatituta", "Transferentzia-kodeketa[\n]: zatituta" edo "Transferentzia-kodifikazioa: zatituta", eta backendak arrakastaz prozesatzen ditu).
Kasu honetan, erasotzaile batek "Content-Length" eta "Transfer-Encoding: chunked" goiburuak dituen eskaera bidal dezake, baina "Content-Length"-ko tamaina ez dator bat zatitutako katearen tamainarekin, hau da. benetako balioa baino txikiagoa da. Frontendak eskaera "Content-Length"-en arabera prozesatu eta birbidaltzen badu eta backend-ak blokea amaitu arte itxaron badu "Transfer-Encoding: chunked"-en arabera, "Transfer-Encoding: chunked"-en oinarritutako datuen amaiera izango da. lehenago zehaztuko da eta eskaeraren gainerako isatsa erasotzailea hurrengo eskaeraren hasieran izango da, hau da. erasotzaileak datu arbitrarioak erantsi ahal izango dizkio hurrengo bidalitako beste norbaiten eskaeraren hasieran.
Erabilitako frontend-backend konbinazioan arazoa zehazteko, honelako eskaera bat bidali dezakezu frontend bidez:
POST /HTTP-ri buruz/1.1
Ostalaria: adibidea.com
Transferentzia-kodeketa: zatikatua
Eduki-luzera: 4
1
Z
Q
Arazoa dago backend-ak eskaera berehala prozesatzen ez badu eta zatitutako datuen azken zero muga-blokea noiz iritsiko zain. Egiaztapen osoago bat egiteko
Benetako erasoa egitea erasotutako gunearen gaitasunen araberakoa da, adibidez, Trello web-aplikazioa erasotzean, eskaeraren hasiera ordezkatu dezakezu (Β«PUT /1/members/1234... x=x&csrfΒ» bezalako datuak ordezkatu ditzakezu. =1234&username=testzzz&bio=cakeβ) eta bidali mezu bat hirugarrenen erabiltzaile baten jatorrizko eskaera eta bertan zehaztutako autentifikazio cookiea barne. Saas-app.com-en eraso batengatik, erantzunean JavaScript kodea ordezkatzea posible izan zen eskaeraren parametroetako batean ordezkatuz. Redhat.com-en erasorako, barne kudeatzaile bat erabili zen erasotzailearen webgunera birbideratzeko (Β«POST /search?dest=../assets/idx?redir=//Β» formularioko eskaera bat[posta elektroniko bidez babestua]/ HTTP/1.1").
Edukiak bidaltzeko sareetarako metodoa erabiltzeak eskatutako gunea ordezkatzea ahalbidetu zuen, "Ostalari:" goiburua ordezkatuz. Erasoa edukiak gordetzeko sistemen edukia pozoitzeko eta cacheko datu konfidentzialak ateratzeko ere erabil daiteke. Metodoaren gailurra PayPal-en aurkako erasoa antolatzea izan zen, erabiltzaileek autentifikazioan bidalitako pasahitzak atzematea ahalbidetzen zuena (iframe eskaera aldatu zen paypal.com/us/gifts orriaren testuinguruan JavaScript exekutatzeko, adibidez). zein CSP (Content Security Policy) aplikatu ez den).
Interesgarria da 2005ean bazegoela
Iturria: opennet.ru