CSRF neboli Cross-Site Request Forgery je zranitelnost webu, při které může útočník způsobit akci v relaci oběti na jiném webu. Jednou z věcí, které činí CSRF tak velkým rizikem, je to, že ani nevyžaduje interakci uživatele, vše, co je potřeba, je, aby si oběť prohlédla webovou stránku s exploitem.
Tip: CSRF se obecně vyslovuje buď písmeno po písmenu, nebo jako „mořský příboj“.
Jak útok CSRF funguje?
Útok spočívá v tom, že útočník vytvoří webovou stránku, která má způsob odeslání požadavku na jiný web. To může vyžadovat interakci uživatele, například přimět ho ke stisknutí tlačítka, ale také to může být bez interakce. V JavaScriptu existují způsoby, jak způsobit, že se akce provede automaticky. Například obrázek nula krát nula pixelů nebude viditelný pro uživatele, ale lze jej nakonfigurovat tak, aby jeho „src“ zadával požadavek na jiný web.
JavaScript je jazyk na straně klienta, to znamená, že kód JavaScript se spouští v prohlížeči, nikoli na webovém serveru. Díky této skutečnosti je počítač, který provádí žádost CSRF, ve skutečnosti počítač oběti. Bohužel to znamená, že požadavek je podán se všemi oprávněními, která uživatel má. Jakmile útočící web oklame oběť, aby podala žádost CSRF, žádost je v podstatě k nerozeznání od uživatele, který žádost zadává normálně.
CSRF je příkladem „zmateného zástupce útoku“ proti webovému prohlížeči, protože prohlížeč je oklamán, aby použil svá oprávnění útočník bez těchto oprávnění. Tato oprávnění jsou vaše relace a ověřovací tokeny pro cílový web. Váš prohlížeč automaticky zahrne tyto podrobnosti do každé žádosti, kterou vznese.
Organizace útoků CSRF je poněkud složitá. Za prvé, cílový web musí mít formulář nebo adresu URL, která má vedlejší účinky, jako je smazání vašeho účtu. Útočník pak potřebuje vytvořit požadavek na provedení požadované akce. Nakonec musí útočník přimět oběť, aby načetla webovou stránku s exploitem, když je přihlášena k cílové webové stránce.
Chcete-li předejít problémům s CSRF, nejlepší věc, kterou můžete udělat, je zahrnout token CSRF. CSRF token je náhodně vygenerovaný řetězec, který je nastaven jako cookie, hodnotu je třeba zahrnout do každé odpovědi vedle hlavičky požadavku, která hodnotu obsahuje. Přestože útok CSRF může obsahovat soubor cookie, není možné určit hodnotu tokenu CSRF pro nastavení záhlaví, takže útok bude odmítnut.