1. ホーム
  2. security

[解決済み] CORSとCSPの違いは何ですか?

2023-01-18 22:17:32

質問

私の目から見ると、このような技術は Cross-Origin Resource Sharing (CORS) (クロスオリジンリソース共有) コンテンツセキュリティポリシー (CSP) は、目的と実装が非常に似ているようです。

どちらも、HTTP レスポンスヘッダを介して、妥協のないバージョンの Web ページが組み込むリソースの起源をホワイトリスト化することができるようです。私が見ることができる唯一の違いは、CSP は HTTP レスポンスで承認できるものがより細かいということです。

どのように解決するのですか?

CORS では 同一生成元ポリシー をドメインに対して緩和することができます。

例: 通常、ユーザーが両方のドメインにログインする場合 example.comexample.org の場合、同一生成元ポリシーにより example.com に AJAX リクエストをすることを防ぎます。 example.org/current_user/full_user_details に AJAX リクエストを行い、そのレスポンスにアクセスできるようになります。

これはWebのデフォルトのポリシーで、複数のサイトに同時にログインしたときにユーザーのデータが流出するのを防ぐためのものです。

今度はCORSで。 example.org を許可するポリシーを設定することができます。 https://example.com が AJAX によって作られた応答を読むことを許可するというポリシーを設定することができます。これは、もし両方の example.comexample.org は同じ会社によって運営されており、オリジン間のデータ共有はユーザーのブラウザで許可されることになっています。これはクライアントサイドにのみ影響し、サーバーサイドには影響しません。

一方、CSPは、現在のサイト上でどのようなコンテンツを実行できるかのポリシーを設定します。たとえば、JavaScript をインラインで実行できるかどうか、どのドメインで .js ファイルを読み込むことができるかなどです。これは、次のような攻撃に対するもうひとつの防御策として有益な場合があります。 XSS 攻撃は、攻撃者が HTML ページにスクリプトを注入しようとするものです。通常 の出力はエンコードされ にエンコードされますが、開発者が1つの出力フィールドだけ忘れていたとします。ポリシーがインラインスクリプトの実行を防いでいるため、この攻撃は阻止されます。