1. このページの目的
Subresource Integrity (SRI) の動作を観察する。
1.1. SRIとは
integrity
属性を利用する機能- そのページで読み込んでいるCSSファイルやJavaScriptファイルのハッシュ値を、
link
タグやscript
タグのintegrity
属性値にあらかじめセットしておくことにより、ブラウザがそのファイルを読み込む際に改ざんチェックできる機能。
2. デモ
- このページでは、main.js ファイルを読み込んでいる。
- 無事 main.js が実行されれば、上のエリアに「main.jsファイルのJavaScriptが実行されました。」と表示される。
3. ソースコード
<script src="./main.js" integrity="sha384-X9vdU+ZPKXSHKn4lFW958ze1/aZm8t/xN2irVsDNJLoh81oUzROn9TK4WEHqtMdK" crossorigin="use-credentials"></script>
※ 実際の integrity
属性値とは異なる。
integrity
属性値が空だと、JavaScriptは実行される。integrity
属性値に、"aaa" など適当な文字列がセットされている場合も、JavaScriptは実行される。integrity
属性値が、"sha256-aaa"だとエラーになり、JavaScriptは実行されない。
4. メモ
- HTMLファイルとJavaScript(CSS)ファイルが同じサーバー上に配置されており、尚且つファイルが改ざん可能な状況である場合、JavaScript(CSS)ファイルの改ざんに合わせた
integrity
属性値をセットされることによって、integrity
属性によるチェックが成功してしまう。つまりこの場合、integrity
属性は役に立たない。