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 ページに悪意のあるリクエストを送信したい場合、xmlhttprequestCORS のおかげで、攻撃者はそれを実行できなくなります。