説明
許可範囲の広いCSPは、XSSへの防御を弱めます。スクリプトの読み込み元を広く許可したり、unsafe-inline や unsafe-eval を使ったりすると、回避の余地が広がるおそれがあります。
想定される影響
挿入されたスクリプトによって、セッションの窃取やクライアント側のデータ漏えいが起こる可能性があります。
対処方法
標準の読み込み元を制限し、スクリプトは必要なオリジンだけに許可します。要件に応じてnonceまたはハッシュに基づくCSPを使います。
例
変更前
php
<?php
header("Content-Security-Policy: script-src 'self' unpkg.com cdn.jsdelivr.net;");
変更後
php
<?php
header("Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';");
解説:
- 変更前: ほかのユーザーが管理する内容も配信できる共有ホスティング元から、スクリプトの読み込みを許可しています。
- 変更後: 読み込み元を同一オリジンに限定し、オブジェクトの埋め込みを禁止します。この例にnonceやハッシュはありません。同一オリジンのアップロードやスクリプトも確認してください。CSPは出力エンコーディングの代わりにはなりません。