ファイルの改ざんチェック Subresource Integrity
Subresource Integrity(SRI)とは
- CDNから呼び込んだファイルが改ざんがされてないか、ブラウザ側で検証するためのセキュリティ機能のこと。
- そのCDNファイルのハッシュ値が一致するかを見てる。
※CDNとは、有名なのはGoogleさんが提供してるjQueryとかかな。
実装方法
- <script>,<link>要素のinitegrity属性値に指定する。
- ハッシュアルゴリズムは、(sha256,sha384,sha512)に対応。
- base64でエンコードされたモノを上記のどれかでハッシュ化。
base64でエンコードされた文字列をsha512でハッシュ化してみた
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha512-U6K1YLIFUWcvuw5ucmMtT9HH4t0uz3M366qrF5y4vnyH6dgDzndlcGvH/Lz5k8NFh80SN95aJ5rqGZEdaQZ7ZQ==" crossorigin="anonymous"></script>
<crossorigin=”anonymous”って属性がセットされてる。
この設定があると、cookie,クライアントサイドのSSL証明書、HTTP認証などのユーザー認証情報が、使えない。
因みに、crossorigin="use-credentials"と指定すると、認証情報が使える。
ハッシュ値の生成は、Opensslコマンドを使って作れるけど、
ハードルが高い人には、オンラインサービスもある。
ただ、Subresource Integrity(SRI)が実装されているブラウザは、2016/10/03現在では、Firefox、Chrome、Opera、Android Browser52、Chrome for Android51となっており、EdgeやSafariでは使えない。