Асуудлын гол зүйл бол урд болон арын хэсэг нь HTTP протоколд янз бүрийн түвшний дэмжлэг үзүүлдэг боловч нэгэн зэрэг өөр өөр хэрэглэгчдийн хүсэлтийг нийтлэг суваг болгон нэгтгэдэг явдал юм. Frontend хүлээн авах хүсэлтүүд болон backend боловсруулах хүсэлтүүдийг холбохын тулд урт хугацааны TCP холболтыг бий болгож, хэрэглэгчийн хүсэлтийг HTTP протоколоор тусгаарлаж, гинжин хэлхээний дагуу нэг нэгээр нь дамжуулдаг. Хүсэлтүүдийг салгахын тулд "Агуулгын урт" (хүсэлт дэх өгөгдлийн нийт хэмжээг тодорхойлдог) болон "
Хэрэв урд тал нь зөвхөн "Агуулгын урт"-ыг дэмждэг боловч "Шилжүүлгийн кодчилол: хэсэгчилсэн" -ийг үл тоомсорлодог (жишээлбэл, Akamai CDN үүнийг хийсэн) эсвэл эсрэгээр нь асуудал үүсдэг. Хэрэв Transfer-Encoding: chunked нь хоёр талдаа дэмжигддэг бол HTTP толгойн задлагчийн хэрэгжүүлэх функцуудыг халдлагад ашиглаж болно (жишээ нь, урд хэсэг нь "Шилжүүлэн кодчилол: xchunked", "Шилжүүлэн кодлох: chunked" гэх мэт мөрүүдийг үл тоомсорлодог. ”, “Шилжүүлгийн кодчилол” :[tab]хэсэглэсэн”, “X: X[\n]Шилжүүлгийн кодчилол: хэсэгчилсэн”, “Шилжүүлэн-кодлох[\n]: хэсэгчилсэн” эсвэл “Шилжүүлэн-кодлох: хэсэгчилсэн” болон арын хэсэг нь тэдгээрийг амжилттай боловсруулдаг).
Энэ тохиолдолд халдагчид "Агуулгын урт" болон "Шилжүүлэн кодчилол: хэсэгчилсэн" толгой хэсгийг хоёуланг нь агуулсан хүсэлтийг илгээж болох боловч "Агуулгын урт" дахь хэмжээ нь хэсэгчилсэн гинжин хэлхээний хэмжээтэй тохирохгүй байна. бодит үнэ цэнээс бага байна. Хэрэв урд тал нь хүсэлтийг "Агуулгын урт"-ын дагуу боловсруулж, дамжуулж байгаа бол арын хэсэг нь "Шилжүүлэн-кодлох: хэсэгчилсэн" дээр үндэслэн блокыг дуусгахыг хүлээж байгаа бол "Шилжүүлэн-кодлох: хэсэгчилсэн"-д суурилсан өгөгдлийн төгсгөл нь өмнө нь тодорхойлогдох ба хүсэлтийн үлдсэн хэсэг нь халдагч дараагийн хүсэлтийн эхэнд байх болно, i.e. халдагчид дараа нь дамжуулсан өөр хэн нэгний хүсэлтийн эхэнд дурын өгөгдлийг хавсаргах боломжтой болно.
Ашигласан frontend-backend хослолын асуудлыг тодорхойлохын тулд та дараах байдлаар хүсэлт илгээж болно:
POST /HTTP-ийн тухай/1.1
Хөтлөгч: example.com
Дамжуулах-кодлох: хэсэгчилсэн
Агуулга-урт: 4
1
Z
Q
Хэрэв арын хэсэг нь хүсэлтийг тэр даруй боловсруулахгүй бөгөөд хуваагдсан өгөгдлийн эцсийн тэг хязгаарлах блок ирэхийг хүлээж байвал асуудал үүснэ. Илүү бүрэн шалгахын тулд
Бодит халдлага хийх нь халдлагад өртсөн сайтын чадвараас шалтгаална, жишээлбэл, Trello вэб програм руу довтлохдоо та хүсэлтийн эхлэлийг орлуулж болно ("PUT /1/members/1234... x=x&csrf" гэх мэт өгөгдлийг орлуулж болно. =1234&хэрэглэгчийн нэр=testzzz&bio=бялуу”) болон гуравдагч этгээдийн хэрэглэгчийн анхны хүсэлт, түүнд заасан баталгаажуулалтын күүки агуулсан мессеж илгээнэ үү. Saas-app.com-д халдсан тохиолдолд хүсэлтийн параметрүүдийн аль нэгэнд орлуулж, хариултын JavaScript кодыг орлуулах боломжтой болсон. Redhat.com сайтын халдлагад халдагчийн вэб сайт руу чиглүүлэхийн тулд дотоод зохицуулагчийг ашигласан ("POST /search?dest=../assets/idx?redir=//" маягтын хүсэлт.[имэйлээр хамгаалагдсан]/ HTTP/1.1").
Агуулга дамжуулах сүлжээнд ашиглах аргыг ашигласнаар хүссэн сайтыг "Хост:" толгой хэсгийг орлуулах замаар солих боломжтой болсон. Энэхүү халдлагыг агуулгын кэшийн системийн агуулгыг хордуулж, кэштэй нууц мэдээллийг задлахад ашиглаж болно. Аргын оргил нь PayPal-д халдсан зохион байгуулалт байсан бөгөөд энэ нь баталгаажуулалтын явцад хэрэглэгчдийн илгээсэн нууц үгийг таслан зогсоох боломжийг олгосон (iframe хүсэлтийг paypal.com/us/gifts хуудасны контекст JavaScript ажиллуулахаар өөрчилсөн. аль CSP (Агуулгын аюулгүй байдлын бодлого) хэрэгжээгүй).
Сонирхолтой нь 2005 онд тэнд байсан
Эх сурвалж: opennet.ru