Fanafihana amin'ny rafitra front-end-back-end izay ahafahantsika miditra amin'ny fangatahana avy amin'ny antoko fahatelo

NAMPAHAFANTARAN'I antsipirihan'ny fanafihana vaovao amin'ny tranokala mampiasa maodely front-end-back-end, toy ireo mandeha amin'ny tamba-jotra fanaterana votoaty, mpifandanja entana na proxy. Ny fanafihana dia mamela, amin'ny alalan'ny fandefasana fangatahana sasany, mitsatoka amin'ny votoatin'ny fangatahana hafa voahodina amin'ny kofehy mitovy eo anelanelan'ny frontend sy backend. Ny fomba natolotra dia nahomby tamin'ny fikarakarana fanafihana izay nahafahana nanakana ny mari-pamantarana fanamarinana ny mpampiasa ny serivisy PayPal, izay nandoa vola ho an'ny mpikaroka momba ny 40 arivo dolara ho ampahany amin'ny fandaharana iray hampahafantarana ny fisian'ireo vulnerabilities tsy voafehy. Ny fanafihana koa dia azo ampiharina amin'ny tranokala mampiasa ny tamba-jotra fanaterana votoaty Akamai.

Ny fototry ny olana dia ny frontends sy backends matetika dia manome ambaratonga samihafa amin'ny fanohanana ny protocol HTTP, fa miaraka amin'izay koa dia mamehy ny fangatahana avy amin'ny mpampiasa samihafa ho fantsona iraisana. Mba hampifandraisana ny fangatahan'ny fandraisana an-tampony sy ny fangatahana fanodinana backend, dia apetraka ny fifandraisana TCP maharitra, izay handefasana ny fangatahan'ny mpampiasa, ampitaina manaraka ny rojo, misaraka amin'ny alalan'ny protocol HTTP. Mba hanasarahana ny fangatahana, ny lohatenin'ny "Content-Length" (mamaritra ny totalin'ny angona ao amin'ny fangatahana) ary "Famindrana-Encoding: tapaka"(mamela anao hamindra angona amin'ny ampahany, manondro sakana misy habe samihafa amin'ny endrika "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Mipoitra ny olana raha toa ka tsy manohana afa-tsy ny “Content-Length” ny frontend fa tsy miraharaha ny “Transfer-Encoding: chunked” (ohatra, Akamai CDN no nanao izany) na ny mifamadika amin'izany. Raha tohanana amin'ny andaniny roa ny Transfer-Encoding: chunked, dia azo ampiasaina amin'ny fanafihana ny endri-javatra fampiharana an'ny mpizara lohapejy HTTP (ohatra, rehefa tsy miraharaha andalana toy ny "Transfer-Encoding: xchunked", "Transfer-encoding: chunked" ”, “Fandrafetana-famindrana :[tab] nopotehina”, “X: X[\n]fanodinkodina-famindrana: tapatapaka”, “fandrafetana-famindrana[\n]: tapatapaka” na “fandrafetana-famindrana : tapatapaka”, ary ny ny backend dia nahomby tamin'ny fanodinana azy ireo).

Amin'ity tranga ity, ny mpanafika dia afaka mandefa fangatahana izay misy ny lohatenin'ny "Lava votoaty" sy ny lohatenin'ny "Fandefasana-Encoding: chunked", fa ny habe ao amin'ny "Hala votoaty" dia tsy mifanandrify amin'ny haben'ny rojo vy, izay dia kely noho ny tena sandany. Raha toa ny frontend dia mizotra sy mandroso ny fangatahana araka ny "Content-Length" ary ny backend dia miandry ny fahavitan'ny sakana mifototra amin'ny "Transfer-Encoding: chunked", dia ny fiafaran'ny data mifototra amin'ny "Transfer-Encoding: chunked" dia hofaritana mialoha ary ny rambony sisa amin'ny fangatahana ilay mpanafika dia ho eo am-piandohan'ny fangatahana manaraka, i.e. ny mpanafika dia afaka mampiditra angona tsy misy dikany amin'ny fiandohan'ny fangatahan'olon-kafa alefa manaraka.

Fanafihana amin'ny rafitra front-end-back-end izay ahafahantsika miditra amin'ny fangatahana avy amin'ny antoko fahatelo

Mba hamaritana ny olana amin'ny fitambaran'ny frontend-backend ampiasaina dia azonao atao ny mandefa fangatahana toy izao amin'ny alàlan'ny frontend:

POST /momba ny HTTP/1.1
mpampiantrano: example.com
Famindrana-Encoding: tapaka
Halavan'ny atiny: 4

1
Z
Q

Ny olana dia misy raha toa ka tsy mandray ny fangatahana avy hatrany ny backend ary miandry ny fahatongavan'ny bloc farany tsy misy fetran'ny angon-drakitra. Ho fanamarinana feno kokoa vonona fitaovana manokana izay mitsapa fomba azo atao hanafenana ny lohapejy "Transfer-Encoding: chunked" amin'ny frontend.

Ny fanaovana fanafihana tena izy dia miankina amin'ny fahaiza-manaon'ny tranokala voatafika, ohatra, rehefa manafika ny fampiharana tranonkala Trello dia azonao atao ny manolo ny fiandohan'ny fangatahana (angona fanoloana toy ny "PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake”) ary alefaso hafatra misy ny fangatahana tany am-boalohany nataon'ny mpampiasa antoko fahatelo sy ny Cookie fanamarinana voalaza ao. Ho an'ny fanafihana amin'ny saas-app.com dia hita fa azo atao ny manolo ny kaody JavaScript amin'ny valiny amin'ny fanoloana azy amin'ny iray amin'ireo mari-pamantarana fangatahana. Ho an'ny fanafihana amin'ny redhat.com dia nisy mpitantana anatiny nampiasaina hamindrana mankany amin'ny tranokalan'ny mpanafika (fangatahana amin'ny endrika “POST /search?dest=../assets/idx?redir=//[email voaaro]/ HTTP/1.1").

Ny fampiasana ny fomba ho an'ny tambajotra fanaterana votoaty dia nahafahana nisolo ny tranokala nangatahana tamin'ny fanoloana ny lohapejy "Host:". Ny fanafihana koa dia azo ampiasaina hanapoizina ny atiny rafitra caching votoaty sy hanesorana ny angona tsiambaratelo voatahiry. Ny faratampon'ny fomba dia ny fandaminana fanafihana amin'ny PayPal, izay nahafahana nanakana ny tenimiafina nalefan'ny mpampiasa nandritra ny fanamarinana (ny fangatahana iframe dia novaina mba hampiharana ny JavaScript amin'ny tontolon'ny pejy paypal.com/us/gifts, ho an'ny izay CSP (Politika fiarovana amin'ny atiny) tsy nampiharina).

Mahaliana fa tamin'ny 2005 dia nisy nanolo-kevitra teknika fanodikodinana fangatahana mitovitovy amin'izany izay ahafahanao misoloky angon-drakitra amin'ny proxy caching (Tomcat, squid, mod_proxy) na mandingana ny fanakanana firewall amin'ny alàlan'ny famaritana fangatahana "GET" na "POST" maromaro ao anatin'ny fivoriana HTTP iray.

Source: opennet.ru

Add a comment