Co je CSRF? CSRF je útok, při kterém podvodná stránka zneužije to, že jste jinde přihlášeni, a Vaším jménem provede akci, kterou jste nezadali. Zkratka pochází z anglického Cross Site Request Forgery, tedy podvržení požadavku z cizího webu.
Představte si to takto. Jste přihlášeni do administrace svého webu a v jiné záložce otevřete stránku, které se dá věřit jen zdánlivě. Ta stránka na pozadí pošle Vašemu webu příkaz, třeba změň heslo správce nebo přidej nového uživatele. Prohlížeč k příkazu automaticky přiloží Vaše přihlašovací cookies, takže web to vidí jako běžný požadavek od Vás a poslechne. Je to jako když někdo cizí použije Vaši podepsanou, ale nevyplněnou složenku.
Jak se proti tomu web brání? Zavedením takzvaného CSRF tokenu:
- Do každého formuláře se vloží náhodné jednorázové heslo, o kterém ví jen Vaše stránka a server.
- Server přijme příkaz jen s tímto tokenem. Cizí stránka ho nemůže znát, takže její požadavek skončí odmítnutím.
- Cookies se označí příznakem SameSite, který prohlížeči řekne, aby je k požadavkům z cizích webů nepřikládal.
Kdo to musí zařídit? Programátor webu, případně systém, který používáte. Dobrá zpráva je, že rozumné hotové systémy to dělají za Vás: WordPress má vlastní ochranu vestavěnou a totéž platí pro seriózní frameworky. Ochranu ale mohou pokazit špatně napsané pluginy a šablony, proto se vyplatí instalovat jen doplňky z důvěryhodných zdrojů a držet je aktuální.
Chrání proti CSRF HTTPS? Ne. Šifrování řeší, aby nikdo cestou nečetl a neměnil data, ale nerozliší, kdo požadavek vyvolal. Nepomůže ani CAPTCHA u přihlášení, protože útok probíhá až potom, co jste přihlášeni. Pomůže naopak ochranná vrstva WAF před webem a hlavně správně napsaná aplikace.
Co s tím zvládnete Vy jako provozovatel? Aktualizujte systém i doplňky, po práci se z administrace odhlašujte, neotevírejte v témže prohlížeči neznámé odkazy z podezřelých zpráv, protože právě takový odkaz bývá spouštěčem, a zapněte si dvoufázové ověření. CSRF se často zmiňuje jedním dechem s XSS, jde ale o jiné útoky: XSS podstrčí do stránky cizí kód, CSRF zneužije Vaše přihlášení. Souhrn obrany najdete v hesle zabezpečení webu.