CSRF arba Cross-Site Request Forgery yra svetainės pažeidžiamumas, kai užpuolikas gali sukelti veiksmą aukos seanso metu kitoje svetainėje. Vienas iš dalykų, dėl kurių CSRF kelia tokią didelę riziką, yra tai, kad jam net nereikia vartotojo sąveikos, tereikia, kad auka peržiūrėtų tinklalapį su jame esančiu išnaudojimu.
Patarimas: CSRF paprastai tariamas raidė po raidės arba kaip „jūros banglenčių sportas“.
Kaip veikia CSRF ataka?
Ataka apima, kad užpuolikas sukuria svetainę, kurioje yra būdas pateikti užklausą kitoje svetainėje. Tam gali prireikti vartotojo sąveikos, pvz., priversti jį paspausti mygtuką, tačiau tai gali būti ir be sąveikos. „JavaScript“ yra būdų, kaip automatiškai atlikti veiksmą. Pavyzdžiui, nulio ir nulio pikselių vaizdas nebus matomas vartotojui, bet gali būti sukonfigūruotas taip, kad jo „src“ pateiktų užklausą kitai svetainei.
„JavaScript“ yra kliento kalba, tai reiškia, kad „JavaScript“ kodas paleidžiamas naršyklėje, o ne žiniatinklio serveryje. Dėl šio fakto kompiuteris, kuris pateikia CSRF užklausą, iš tikrųjų yra aukos kompiuteris. Deja, tai reiškia, kad užklausa pateikiama su visais vartotojo turimais leidimais. Kai atakos svetainė apgaule apgauna auką, kad ji pateiktų CSRF užklausą, užklausa iš esmės nesiskiria nuo įprastą užklausą pateikiančio vartotojo.
CSRF yra „supainiotos pavaduotojo atakos“ prieš žiniatinklio naršyklę pavyzdys, nes tų privilegijų neturintis užpuolikas apgaule apgauna naršyklę ir pasinaudoja jos leidimais. Šie leidimai yra jūsų seanso ir autentifikavimo prieigos raktai į tikslinę svetainę. Jūsų naršyklė automatiškai įtraukia šią informaciją į bet kurią užklausą.
CSRF atakas surengti gana sudėtinga. Visų pirma, tikslinė svetainė turi turėti formą arba URL, turintį šalutinį poveikį, pvz., paskyros ištrynimą. Tada užpuolikas turi pateikti prašymą atlikti norimą veiksmą. Galiausiai, užpuolikas turi priversti auką įkelti tinklalapį su jame esančiu išnaudojimu, kol jis yra prisijungęs prie tikslinės svetainės.
Kad išvengtumėte CSRF problemų, geriausia, ką galite padaryti, tai įtraukti CSRF prieigos raktą. CSRF prieigos raktas yra atsitiktinai sugeneruota eilutė, kuri nustatoma kaip slapukas. Reikšmė turi būti įtraukta į kiekvieną atsakymą kartu su užklausos antrašte, kurioje yra reikšmė. Nors CSRF ataka gali apimti slapuką, jokiu būdu negalima nustatyti CSRF prieigos rakto reikšmės antraštei nustatyti, todėl ataka bus atmesta.