51

CORS がサーバー上で適切にセットアップされ、特定のオリジンのみがサーバーにアクセスできるようになっている場合、

これはCSRF攻撃を防ぐのに十分ですか?

4

6 に答える 6

48

具体的に言うと、evil.com が CORS のために good.com にリクエストを送信できない場合、CSRF が防止されると考えがちです。ただし、見落とされている 2 つの問題があります。

  1. CORS は、ブラウザーによってのみ尊重されます。つまり、Google Chrome は CORS に従い、evil.com から good.com へのリクエストを許可しません。しかし、誰かがネイティブ アプリや、あなたのサイトに POST するフォームを持つものを構築したと想像してみてください。XSRF トークンは、それを防ぐ唯一の方法です。

  2. CORS は JS リクエスト専用であるという事実を見落としがちですか。good.com に POST を返す Evil.com の通常のフォームは、CORS にもかかわらず機能します。

これらの理由から、CORS は XSRF トークンの適切な代替にはなりません。両方を使用するのが最善です。

于 2016-05-05T08:11:57.700 に答える
13

いいえ!

CORS は、XSRF が CORS に依存しない方法を攻撃している 2 つのドメイン間の共有を可能にします。

「CORS が適切にセットアップされている」という意味がわかりませんが、XSRF で攻撃する場合、ブラウザーはサーバーで CORS ヘッダーを要求しません。

CORSはセキュリティではありません:)

于 2013-11-05T16:25:27.703 に答える
10

いいえ。

Same Origin Policy (CORS を使用すると、選択的な穴をあけることができます) により、サード パーティのサイトがユーザーになりすまして別のサイトから (プライベートな) データを読み取ることができなくなります。

クロス サイト リクエスト フォージェリ攻撃とは、サード パーティのサイトがユーザーになりすまして別のサイトに (そのユーザーとして) データを送信することです。応答を読み返す必要はありません。

于 2013-11-05T16:29:46.063 に答える
-4

実際、CORS はセキュリティに貢献しています。CORS は、異なるホスト間の XSS および CSRF 攻撃に関連して非常に役立ちます。Web サイトに XSS の脆弱性があり、攻撃者がそれを使用して を介して別の Web ページに悪意のあるリクエストを送信したい場合、xmlhttprequestCORS のおかげで、攻撃者はそれを実行できなくなります。

于 2014-05-19T18:53:43.400 に答える