ELIFE眞空 ぼちぼちいきます

日常自分が忘れてしまいそうなことをクリップしています。

ファイルの改ざんチェック Subresource Integrity

Subresource Integrity(SRI)とは

  1. CDNから呼び込んだファイルが改ざんがされてないか、ブラウザ側で検証するためのセキュリティ機能のこと。
  2. そのCDNファイルのハッシュ値が一致するかを見てる。

※CDNとは、有名なのはGoogleさんが提供してるjQueryとかかな。

Google Hosted Libraries

 

実装方法

  1.   <script>,<link>要素のinitegrity属性値に指定する。
  2. ハッシュアルゴリズムは、(sha256,sha384,sha512)に対応。
  3. 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コマンドを使って作れるけど、

ハードルが高い人には、オンラインサービスもある。

SRI Hash Generator



ただ、Subresource Integrity(SRI)が実装されているブラウザは、2016/10/03現在では、FirefoxChromeOperaAndroid Browser52、Chrome for Android51となっており、EdgeやSafariでは使えない。 

subresource-integrity