2013年版では「A8 Cross-Site Request Forgery」として掲載されていましたが、2017年版では独立項目から外れました。
OWASPは2017年版のリリースノートで、主要フレームワークがCSRF防御を備えるようになり、調査対象アプリケーションでの検出率が約5%だったことを理由として説明しています。
ただし、独立項目から外れたことは「CSRFがなくなった」という意味ではありません。
フレームワークの標準機能を無効化したり、独自APIやSPAで防御を実装し忘れたりすれば、現在でも成立します。
2000年代後半から2010年代にかけて、主要フレームワークがCSRFトークンを標準機能として実装しました。
代表例は次のとおりです。
Django
Ruby on Rails
Spring Security
ASP.NET
Laravel
Symfony
正規サイトが発行した秘密の値をリクエストに含め、Cookieだけでなくトークンも一致した場合に処理を許可します。
攻撃者サイトはSame-Origin Policyにより正規サイトの画面やレスポンスを自由に読み取れないため、正しいトークンを取得できません。
その後、CookieにSameSite属性が普及しました。