CORS がサーバー上で適切にセットアップされ、特定のオリジンのみがサーバーにアクセスできるようになっている場合、
これはCSRF攻撃を防ぐのに十分ですか?
CORS がサーバー上で適切にセットアップされ、特定のオリジンのみがサーバーにアクセスできるようになっている場合、
これはCSRF攻撃を防ぐのに十分ですか?
具体的に言うと、evil.com が CORS のために good.com にリクエストを送信できない場合、CSRF が防止されると考えがちです。ただし、見落とされている 2 つの問題があります。
CORS は、ブラウザーによってのみ尊重されます。つまり、Google Chrome は CORS に従い、evil.com から good.com へのリクエストを許可しません。しかし、誰かがネイティブ アプリや、あなたのサイトに POST するフォームを持つものを構築したと想像してみてください。XSRF トークンは、それを防ぐ唯一の方法です。
CORS は JS リクエスト専用であるという事実を見落としがちですか。good.com に POST を返す Evil.com の通常のフォームは、CORS にもかかわらず機能します。
これらの理由から、CORS は XSRF トークンの適切な代替にはなりません。両方を使用するのが最善です。
いいえ!
CORS は、XSRF が CORS に依存しない方法を攻撃している 2 つのドメイン間の共有を可能にします。
「CORS が適切にセットアップされている」という意味がわかりませんが、XSRF で攻撃する場合、ブラウザーはサーバーで CORS ヘッダーを要求しません。
CORSはセキュリティではありません:)
いいえ。
Same Origin Policy (CORS を使用すると、選択的な穴をあけることができます) により、サード パーティのサイトがユーザーになりすまして別のサイトから (プライベートな) データを読み取ることができなくなります。
クロス サイト リクエスト フォージェリ攻撃とは、サード パーティのサイトがユーザーになりすまして別のサイトに (そのユーザーとして) データを送信することです。応答を読み返す必要はありません。
実際、CORS はセキュリティに貢献しています。CORS は、異なるホスト間の XSS および CSRF 攻撃に関連して非常に役立ちます。Web サイトに XSS の脆弱性があり、攻撃者がそれを使用して を介して別の Web ページに悪意のあるリクエストを送信したい場合、xmlhttprequest
CORS のおかげで、攻撃者はそれを実行できなくなります。