ホームページ > テクノロジー周辺機器 > IT業界 > コンテンツセキュリティポリシーでWebセキュリティを改善します

コンテンツセキュリティポリシーでWebセキュリティを改善します

William Shakespeare
リリース: 2025-02-20 12:04:16
オリジナル
903 人が閲覧しました

コンテンツセキュリティポリシー(CSP):Webセキュリティに関する包括的なガイド

コンテンツセキュリティポリシー(CSP)は、コンテンツインジェクション攻撃、主にクロスサイトスクリプト(XSS)に対してWebサイトを保護する重要なセキュリティメカニズムです。 この宣言的なポリシーにより、開発者は信頼できるリソースの起源のホワイトリストを作成し、ブラウザがリソースをロードし、インラインスタイルとスクリプトを使用し、動的なJavaScript評価(eval()を使用するなど)を処理する方法を制御することができます。 このホワイトリストの外部からリソースをロードしようとする試みはブロックされています。

重要な概念:

  • ホワイトリストアプローチ: cspは、許可されたソースを定義し、他のすべてをブロックすることで動作します。>
  • httpヘッダー配信:ポリシーは、httpヘッダーを介して実装されています。Content-Security-Policy
  • ディレクティブベースのコントロール:ヘッダーには、許可されたドメインを指定し、注入攻撃を防ぐためにJavaScriptの実行を制限する指令が含まれています。
  • 違反の報告:
  • 指令ログCSP違反、生産環境にはかけがえのない。 これにより、指定されたURLに違反を詳述するJSONレポートが送信されます。 report-uri
  • どのようにCSPの仕組み:

W3C候補の推奨である cspは、ヘッダーを使用してディレクティブを提供します。 重要な指令には、

Content-Security-Policydefault-srcscript-srcobject-srcstyle-srcimg-src、およびmedia-srcが含まれます。 frame-srcは、不特定の指示のためのフォールバックとして機能します font-srcディレクティブは、一貫したパターンに従います:connect-src default-src

:現在のドメインを参照してください。

    urlリスト:許可された起源を指定するスペース分離URL。
  • self
  • :特定のディレクティブのロードリソースを禁止します(例えば、
  • ブロックプラグイン)。
  • 現在のドメインからのみリソースを許可する基本的なcsp:none object-src 'none'
  • 別のドメインからロードしようとする試みは、コンソールメッセージを使用してブロックされます。 CSPは本質的にインラインスクリプトと動的なコード評価を制限し、注入リスクを大幅に軽減します。

<code>Content-Security-Policy: default-src 'self';</code>
ログイン後にコピー
ログイン後にコピー
ドメインが指定されている間、パスは現在サポートされていません。 ただし、WildCards()は、サブドメインを含めることを可能にします(例: `

.mycdn.com`)。 各指令には、明示的なドメイン/サブドメインリストが必要です。彼らは以前の指令から継承しません

データURLの場合、指令にdata:を含めます(例:img-src 'data:')。 unsafe-inlinescript-srcおよびstyle-src)は、インライン<script></script>および<style></style>タグを許可します。 どちらもオプトインポリシーを使用します。それらを省略すると、制限が強化されます unsafe-evalscript-srcブラウザ互換性:

CSP 1.0は、互換性が限られている古いインターネットエクスプローラーバージョンで、幅広いブラウザのサポートを楽しんでいます。

で違反を監視します 開発ではブラウザコンソールのロギングを使用している間、生産環境はreport-uriの恩恵を受けます。これにより、違反の詳細(JSON形式)を含むHTTP投稿リクエストが指定されたURLに送信されます。 例:

report-uri違反(例:

からのロード)は、

<code>Content-Security-Policy: default-src 'self';</code>
ログイン後にコピー
ログイン後にコピー

ヘッダー:www.google-analytics.comreport-uri

テストには、

を使用してください。 これは、リソースをブロックせずに違反を報告し、サイトの混乱なしに政策の改良を可能にします。 両方のヘッダーを同時に使用できます。 Content-Security-Policy-Report-OnlyCSPの実装:

Content-Security-Policy-Report-Only CSPはHTTPヘッダーを介して設定されています。 サーバー構成(Apache、IIS、nginx)またはプログラマティックメソッド(php's

、node.jsの

)を使用できます。 実世界の例:

header()FacebookとTwitterは、ワイルドカードと特定のドメイン手当を利用して、多様なCSP実装を実証しています。 setHeader()

cspレベル2の拡張:

cspレベル2は、新しい指令(

)、改善されたレポート、およびインラインスクリプトとスタイルの非CE/ハッシュベースの保護を紹介します。

非CEベースの保護:

base-uri child-srcランダムに生成されたノンセは、CSPヘッダーとインラインスクリプトタグの両方に含まれています。 form-actionframe-ancestorsハッシュベースの保護:plugin-types

サーバーは、CSPヘッダーに含まれるスクリプト/スタイルブロックのハッシュを計算します。ブラウザは、実行前にこのハッシュを検証します 結論:

CSPは、リソースの負荷を制御することにより、Webセキュリティを大幅に強化します。

監視が促進され、レベル2はさらに改良を導入します。 CSPの実装は、堅牢で安全なWebアプリケーションを構築する上で重要なステップです。 (注:画像プレースホルダーは、要求されているように変更されていません。)

以上がコンテンツセキュリティポリシーでWebセキュリティを改善しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート