Cross-site Request Forgery (CSRF nebo také XSRF) je jedna z metod útoku do internetových aplikací (typicky implementovaných skriptovacími jazyky nebo CGI) pracující na bázi nezamýšleného požadavku pro vykonání určité akce v této aplikaci, který ovšem pochází z nelegitimního zdroje. Většinou se nejedná o útok směřující k získání přístupu do aplikace (i když i pro to může být zneužit); spíše využívá (zneužívá) akce uživatelů, kteří jsou k ní již v okamžiku útoku přihlášeni.
Existuje nějaká netriviální internetová aplikace (typu wiki, blog, diskuzní fórum, e-shop, redakční systém, …), která má svou administrační část, přístupnou pouze pro administrátory, a u které útočník zná (nebo dokáže odhadnout) URL adresy (popřípadě i posílané proměnné) pro spuštění akcí určených na změnu (editaci obsahu, smazání, …) jejích objektů (příspěvků na blogu či fóru, článků v redakčním systému či wiki, apod.).
Útočník současně zná (je v kontaktu, nebo dokáže oslovit a přesvědčit) jiného uživatele, který se do této aplikace již přihlásil a operuje v ní s administrátorskými právy. Útočník poté (většinou s využitím tzv. sociálního inženýrství) přiměje tohoto administrátora, aby načetl (jím předem připravenou) maligní internetovou stránku, která provede samotný CSRF útok.
Ten spočívá v tom, že součástí této maligní stránky je vyslání požadavku do exploitované internetové aplikace, jenž způsobí změnu určitých záznamů či objektů, které aplikace spravuje. Tento požadavek (HTTP Request) může být realizován (pro HTTP metodu GET) přímo v HTML, pomocí značky, u které se specifikuje zdroj (obrázek, rám stránky, …, navíc často pomocí stylů nebo atributů skryté nebo minimalizované, aby si jich původce požadavku nevšiml); nebo (pro metodu POST) sestavením a provedení požadavku ve skriptovacím jazyce při zpracování stránky.
Útok je úspěšný, pokud v okamžiku požadavku na tuto stránku je uživatel, který maligní stránku spustil, do aplikace platně přihlášen a tato aplikace není proti tomuto typu útoku zabezpečena. Skrytý požadavek na editaci nebo smazání objektů v inkriminované aplikaci se tak vykoná, protože nezabezpečená aplikace nedokáže rozlišit, z jakého podnětu požadavek přišel (zdali z její vlastní administrační stránky nebo z maligní stránky provádějící CSRF útok) – tento útok tedy patří do skupiny tzv. „problému zmateného zástupce“, která je charakteristická tím, že strůjcem maligní akce je nikoli útočník, ale legitimně přihlášený uživatel. Změny se projeví, aniž by to tušil; mohou dokonce zůstat nezjištěny.
Útočník nemusí znát, který záznam chce takto nechat nic netušícím administrátorem smazat nebo změnit, přesto v nechráněné aplikaci je schopen způsobit často neopravitelné škody. Méně často se může pokusit nechat spustit požadavek, který žádný objekt nemění, a místo toho vypíše pro útočníka zajímavé nebo potenciálně zneužitelné informace. CSRF útok u typické internetové aplikace typicky nedokáže získat přístupy k uživatelským účtům, na druhé straně dokáže nadělat mnohdy nezvratitelné škody ve formě důležitých přepsaných dat.