Үчүнчү тараптын суроо-талаптарына кирүү мүмкүнчүлүгүн берген алдыңкы системаларга чабуул

Ачылган мазмун жеткирүү тармактары, жүк баланстоочулар же проксилер аркылуу иштеген сайттар сыяктуу фронттук арткы моделди колдонгон сайттарга жаңы чабуулдун чоо-жайы. Чабуул белгилүү бир суроо-талаптарды жөнөтүү менен, фронт менен бэкэнддин ортосунда бир эле жипте иштетилген башка суроо-талаптардын мазмунуна кирүү мүмкүнчүлүгүн берет. Сунушталган ыкма PayPal сервисинин колдонуучуларынын аутентификация параметрлерин кармоого мүмкүндүк берген чабуулду уюштуруу үчүн ийгиликтүү колдонулду, ал изилдөөчүлөргө жаңыланбаган алсыздыктын бар экендиги жөнүндө маалымат берүү программасынын алкагында 40 миң доллар төлөгөн. Кол салуу Akamai мазмун жеткирүү тармагын колдонгон сайттарга да тиешелүү.

Көйгөйдүн өзөгү – алдыңкы жана бэкенддер көбүнчө HTTP протоколу үчүн ар кандай деңгээлдеги колдоону камсыз кылат, бирок ошол эле учурда ар кандай колдонуучулардын суроо-талаптарын жалпы каналга камтыган. Фронттук кабыл алуучу суроо-талаптарды жана кайра иштетүү өтүнүчтөрүн туташтыруу үчүн узак мөөнөттүү TCP байланышы түзүлөт, ал аркылуу колдонуучунун суроо-талаптары HTTP протоколу аркылуу бөлүнгөн чынжыр боюнча биринин артынан бири өткөрүлүп берилет. Сурамдарды бөлүү үчүн "Content-Length" (суроодогу маалыматтардын жалпы көлөмүн аныктайт) жана "Өткөрмө-коддоо: бөлүктөргө бөлүнгөн"("{size}\r\n{block}\r\n{size}\r\n{block}\r\n0" форматында түрдүү өлчөмдөгү блокторду көрсөтүү менен, маалыматтарды бөлүктөргө бөлүп өткөрүүгө мүмкүндүк берет).

Эгерде фронтон "Мазмунду узундукту" гана колдосо, бирок "Трансфер-коддоштуруу: кесилген" (мисалы, Akamai CDN муну жасады) же тескерисинче болсо, көйгөй пайда болот. Эгерде Transfer-Encoding: chunked эки тараптан тең колдоого алынса, HTTP баш талдоочуларынын ишке ашыруу мүмкүнчүлүктөрү чабуул үчүн колдонулушу мүмкүн (мисалы, алдыңкы аягы “Трансфер-Коддоо: xchunked”, “Transfer-Encoding: chunked” сыяктуу саптарды этибарга албаганда ”, “Өткөрүү-коддоо” :[таблица]бөлүнгөн”, “X: X[\n]Өткөрүү-коддоо: кесинди”, “Өткөрүү-коддоо[\n]: бөлүктөр” же “Өткөрмө-коддоо: бөлүктөр”, жана backend аларды ийгиликтүү иштетет).

Бул учурда, чабуулчу "Мазмун-узундугу" жана "Өткөрүлгөн-коддоо: кесилген" аталыштарын камтыган сурам жөнөтө алат, бирок "Мазмун-Узундук" ичиндеги өлчөм кесилген чынжырдын өлчөмүнө туура келбейт. чыныгы мааниден кичине. Эгерде фронтондук суроо-талапты "Мазмун-узундугуна" ылайык иштетсе жана кайра жөнөтсө, ал эми бэкэнд "Трансфер-коддоо: бөлүктөргө" негизделген блоктун бүтүшүн күтсө, анда "Өткөрүлгөн-коддоо: бөлүктөргө" негизделген маалыматтардын аягы мурда аныкталат жана өтүнүчтүн калган куйругу чабуулчу кийинки суроонун башында болот, б.а. чабуулчу кийинки жиберилген башка бирөөнүн өтүнүчүнүн башына каалагандай маалыматтарды кошо алат.

Үчүнчү тараптын суроо-талаптарына кирүү мүмкүнчүлүгүн берген алдыңкы системаларга чабуул

Колдонулган frontend-backend айкалышындагы көйгөйдү аныктоо үчүн, сиз төмөнкүдөй суроону frontend аркылуу жөнөтө аласыз:

POST /HTTP жөнүндө/1.1
Хост: example.com
Өткөрмө-коддоо: бөлүктөргө бөлүнгөн
Мазмундун узактыгы: 4

1
Z
Q

Көйгөй, эгерде сервер суроо-талапты дароо иштетпесе жана кесилген маалыматтардын акыркы нөлдүк чектөө блогунун келишин күтсө болот. Толук текшерүү үчүн даярдалган атайын утилита, ал ошондой эле "Transfer-Encoding: chunked" аталышын фронтондон жашыруунун мүмкүн болгон ыкмаларын сынайт.

Чыныгы чабуулду ишке ашыруу чабуулга кабылган сайттын мүмкүнчүлүктөрүнө жараша болот, мисалы, Trello веб тиркемесине чабуул жасоодо, сурамдын башталышын алмаштыра аласыз («PUT /1/members/1234... x=x&csrf сыяктуу маалыматтарды алмаштырыңыз) =1234&username=testzzz&bio=cake”) жана үчүнчү тараптын колдонуучунун баштапкы суроо-талабын жана анда көрсөтүлгөн аутентификация Cookie файлын камтыган билдирүү жөнөтүңүз. Saas-app.com сайтына жасалган чабуул үчүн жоопто JavaScript кодун суроонун параметрлеринин бирине алмаштыруу менен алмаштыруу мүмкүн болуп чыкты. Redhat.com сайтындагы чабуул үчүн чабуулчунун веб-сайтына багыттоо үчүн ички иштеткич колдонулган («POST /search?dest=../assets/idx?redir=//[электрондук почта корголгон]/ HTTP/1.1").

Мазмун жеткирүү тармактары үчүн ыкманы колдонуу "Хост:" башын алмаштыруу менен суралган сайтты жөн гана алмаштырууга мүмкүндүк берди. Кол салуу ошондой эле мазмун кэш тутумдарынын мазмунун ууландырууга жана кэштелген купуя маалыматтарды алуу үчүн колдонулушу мүмкүн. Методдун туу чокусу PayPalга чабуулду уюштуруу болду, ал аутентификация учурунда колдонуучулар жөнөткөн сырсөздөрдү кармап калууга мүмкүндүк берди (iframe сурамы paypal.com/us/gifts баракчасынын контекстинде JavaScriptти аткаруу үчүн өзгөртүлгөн. кайсы CSP (Мазмунду коопсуздук саясаты) колдонулган эмес).

Кызыгы, 2005-жылы болгон сунуш прокси кэште (Tomcat, squid, mod_proxy) маалыматтарды бурмалоого же бир HTTP сеансында бир нече "GET" же "POST" сурамдарын көрсөтүү менен брандмауэрди бөгөттөөдөн өтүүгө мүмкүндүк берген чындыгында окшош суроо-талаптарды бурмалоо ыкмасы.

Source: opennet.ru

Комментарий кошуу