説明
外部スクリプトやスタイルシートを信頼済みのハッシュと照合せずに読み込むと、配信元が侵害された場合に改ざんされた内容が適用されるおそれがあります。Subresource Integrity(SRI)は、対応する script や link 要素でファイルの内容を指定したハッシュと照合します。ハッシュの一致は、ファイル自体の安全性を保証するものではありません。
想定される影響
- 外部リソースの改ざんによって、ページ内で悪意のあるコードが実行されるおそれがあります。
対処方法
- SRI に対応する外部スクリプトやスタイルシートに、信頼済みファイルから計算した
integrity値を指定してください。ファイルの更新時にはハッシュも更新してください。 - 別オリジンのリソースでは、
crossoriginの設定と、配信元サーバーによる適切な CORS 応答も必要です。
例
変更前
html
<script src="https://example.com/script.js"></script>
変更後
URL とハッシュは形式の例です。実際に配信するファイルから計算したハッシュへ置き換えてください。
html
<script
src="https://example.com/script.js"
integrity="sha384-OgVRvuATPupdUSgWVsKllsZZAgvFiTpjlPdSdj0eGVcI/A5efowlBbInEKwdsA5l"
crossorigin="anonymous"
></script>
説明:
- 変更前: 想定した内容のハッシュを確認せず、外部スクリプトを読み込みます。
- 変更後: 対応するブラウザーは、ファイルのハッシュが一致しなければ実行を拒否します。例の URL とハッシュをそのまま使っても、実際のリソースの完全性は確認できません。