弱いContent Security Policy

弱いContent Security Policy

説明

許可範囲の広い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は出力エンコーディングの代わりにはなりません。

参考資料