ホームページ >ウェブフロントエンド >jsチュートリアル >コンテンツ セキュリティ ポリシー (CSP) は XSS 攻撃をどのように防止しますか?

コンテンツ セキュリティ ポリシー (CSP) は XSS 攻撃をどのように防止しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-11 14:06:03248ブラウズ

How Does Content Security Policy (CSP) Prevent XSS Attacks?

コンテンツ セキュリティ ポリシー (CSP) の仕組み

「文字列の評価が拒否されました」や「インライン スクリプトの実行が拒否されました」などのエラーによって混乱する「? XSS 攻撃から保護する重要なセキュリティ対策であるコンテンツ セキュリティ ポリシー (CSP) の仕組みを詳しく見てみましょう。

基本概念

CSP はリソースをロードできる場所を制限しますを防止し、ブラウザが不正なソースからデータを取得するのを防ぎます。許可されたソースを定義することで、CSP は悪意のあるコード インジェクションのリスクを軽減します。

CSP ディレクティブの追加

CSP は、Content-Security-Policy HTTP ヘッダーを使用して実装されます。許可されるオリジンとポリシーを定義するディレクティブが含まれています。簡単な例は次のとおりです。

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://example.com;">

ディレクティブ

最も一般的なディレクティブは次のとおりです。

  • default-src: のデフォルト ポリシースクリプト、イメージ、AJAX を除くすべてのリソースrequest.
  • script-src: スクリプトの有効なソースを定義します。
  • style-src: スタイルシートの有効なソースを定義します。
  • img-src: 画像の有効なソースを定義します。
  • connect-src: AJAX リクエスト、WebSocket、およびEventSource.

複数のソースとディレクティブ

  • ディレクティブ内でスペース区切りのリストとしてリストすることで複数のソースを許可します。例:default- src 'self' https://example.com/js/.
  • 複数使用ディレクティブは、同じタグ内でセミコロンで区切って指定します (例: content="default-src 'self'; script-src 'self'")。

プロトコルとポートの処理

  • 許可されたドメインにポートを追加して明示的に指定します。例:default-src 'self' https://example.com:8080.
  • アスタリスクを使用してすべてのポートを許可します (例:default-src 'self' https://example.com:*)。
  • ファイル プロトコルを許可するには、ファイル システム パラメータを使用します。例:default-src 'self'ファイルシステム:.

インライン スクリプトとスタイル

  • デフォルトでは、インライン コンテンツはブロックされています。これを許可するには、「unsafe-inline」パラメータを使用します。例: script-src 'unsafe-inline'.

Allowing 'eval()'

  • 「unsafe-eval」パラメータを使用して「eval()」の実行を許可します。例: script-src 'unsafe-eval'.

'Self' 意味

  • 'Self' は同じプロトコルのリソースを指します。ポリシーが存在するページとしてのホストとポート

「default-src *」脆弱性への対処

すべてのソース (default-src *) を許可するのは便利そうに見えますが、安全ではなく、実際には許可されません。実際にはインライン コンテンツや評価は許可されていません。使用は避けてください。

以上がコンテンツ セキュリティ ポリシー (CSP) は XSS 攻撃をどのように防止しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。