CSRF alebo Cross-Site Request Forgery je zraniteľnosť webovej stránky, pri ktorej môže útočník spôsobiť akciu v relácii obete na inej webovej lokalite. Jedna z vecí, ktorá robí CSRF takým veľkým rizikom, je, že nevyžaduje ani interakciu používateľa, všetko, čo je potrebné, je, aby si obeť prezrela webovú stránku s exploitom.
Tip: CSRF sa vo všeobecnosti vyslovuje písmeno po písmene alebo ako „morský surf“.
Ako funguje CSRF útok?
Útok spočíva v tom, že útočník vytvorí webovú stránku, ktorá má spôsob zadania požiadavky na inú webovú stránku. Môže to vyžadovať interakciu používateľa, napríklad prinútiť ho stlačiť tlačidlo, ale môže to byť aj bez interakcie. V JavaScripte existujú spôsoby, ako spôsobiť, že sa akcia vykoná automaticky. Napríklad obrázok nula na nulu v pixeloch nebude viditeľný pre používateľa, ale môže byť nakonfigurovaný tak, aby jeho „src“ odoslal požiadavku na inú webovú stránku.
JavaScript je jazyk na strane klienta, čo znamená, že kód JavaScript sa spúšťa v prehliadači a nie na webovom serveri. Vďaka tejto skutočnosti je počítač, ktorý odošle žiadosť CSRF, v skutočnosti počítač obete. Žiaľ, to znamená, že žiadosť sa podáva so všetkými povoleniami, ktoré má používateľ. Akonáhle útočiaca webová stránka oklame obeť, aby podala žiadosť CSRF, žiadosť je v podstate nerozoznateľná od používateľa, ktorý žiadosť podáva normálne.
CSRF je príkladom „zmäteného zástupcu útoku“ proti webovému prehliadaču, keď je prehliadač oklamaný, aby použil svoje povolenia útočník bez týchto privilégií. Tieto povolenia predstavujú vašu reláciu a overovacie tokeny pre cieľovú webovú stránku. Váš prehliadač automaticky zahrnie tieto podrobnosti do každej žiadosti, ktorú urobí.
Organizácia útokov CSRF je trochu komplikovaná. Po prvé, cieľová webová stránka musí mať formulár alebo adresu URL, ktorá má vedľajšie účinky, ako je napríklad odstránenie vášho účtu. Útočník potom musí vytvoriť požiadavku na vykonanie požadovanej akcie. Nakoniec musí útočník prinútiť obeť, aby načítala webovú stránku s exploitom, kým je prihlásená na cieľovej webovej lokalite.
Aby ste predišli problémom CSRF, najlepšia vec, ktorú môžete urobiť, je zahrnúť token CSRF. Token CSRF je náhodne vygenerovaný reťazec, ktorý je nastavený ako súbor cookie. Hodnota musí byť zahrnutá do každej odpovede spolu s hlavičkou požiadavky, ktorá obsahuje hodnotu. Aj keď útok CSRF môže obsahovať súbor cookie, nie je možné určiť hodnotu tokenu CSRF na nastavenie hlavičky, a preto bude útok odmietnutý.