この質問は、クロスサイトリクエストフォージェリ攻撃のみに対する保護についてです。
具体的には:Originヘッダー(CORS)による保護は、CSRFトークンによる保護と同じくらい優れていますか?
例:
- Aliceは、ブラウザーを使用して(Cookieを使用して) " https://example.com "にログインします。彼女は最新のブラウザを使用していると思います。
- アリスが「https://evil.com」にアクセスし、evil.comのクライアント側コードが「https://example.com」への何らかの要求を実行します(従来のCSRFシナリオ)。
そう:
- Originヘッダー(サーバー側)をチェックせず、CSRFトークンもチェックしない場合、CSRFセキュリティホールがあります。
- CSRFトークンをチェックすれば安全です(ただし、少々面倒です)。
- Originヘッダーを確認する場合、evil.comのクライアント側コードからのリクエストは、CSRFトークンを使用する場合と同様にブロックする必要があります。ただし、evil.comのコードでOriginヘッダーを設定できる場合は除きます。
私は、W3C仕様がすべての最新のブラウザーで正しく実装されていると信頼できる場合(少なくとも、クロスオリジンリソースシェアリングのセキュリティを参照)、これはXHRでは不可能であることを知っています(できるでしょうか?)
しかし、他の種類のリクエストについてはどうでしょう-例えばフォーム送信?script / img / ...タグをロードしますか?または、ページがリクエストを(合法的に)作成するために使用できる他の方法?それとも、いくつかの既知のJSハック?
注:私は話していません
- ネイティブアプリケーション
- 操作されたブラウザ、
- example.comのページのクロスサイトスクリプティングのバグ
- ...
Origin
ですか?CORS保護が無効になります。