🛡️ SRIハッシュ生成(integrity属性)
テキストエリアに貼り付けた内容から、そのままハッシュ値を計算します(ファイルアップロードには対応していません)。
内容を入力してください
<script>や<link>タグで外部リソースを読み込む際にファイルの改ざんを検知するSubResource Integrity(SRI)機能で使う、integrity属性値をテキスト内容から生成するツールです。処理はすべてブラウザ内で完結します。
使い方
- ハッシュ化したいファイルの内容(JSやCSSのソースコード)を貼り付けます。
- ハッシュアルゴリズム(SHA-256・SHA-384・SHA-512)を選びます。
- 生成されたintegrity属性値をコピーして、<script>や<link>タグに貼り付けます。
計算の仕組み
SRI(Subresource Integrity、サブリソース完全性)は、CDNなど外部のサーバーから読み込むJavaScriptやCSSが、途中で書き換えられていないかをブラウザに確認させる仕組みで、W3Cの仕様で定められています。 <script>や<link>タグのintegrity属性に、ファイルの中身のハッシュ値を書いておきます。ブラウザはファイルを受け取ると同じ方法でハッシュを計算し、一致しなければ実行や適用をしません。 このツールは、入力した内容をUTF-8のバイト列にして、SHA-256・SHA-384・SHA-512のいずれかでハッシュを計算し、Base64にして「sha384-…」の形で表示します。SRIでは、SHA-384がよく使われています。
計算例
入力: console.log("Hello, Heron Tools!"); アルゴリズム: SHA-384 結果: sha384-kRDt+sRLDsibNoT2KJ7aLhaapiAtYSpQ8rboCvuX1O3cpwXZ1yPp+IBTEamvLXlV HTMLでの書き方 <script src="https://cdn.example.com/app.js" integrity="sha384-kRDt+sRLDsib…" crossorigin="anonymous"></script> 別のサーバーから読み込むときは、crossorigin属性も必要です。
使用上の注意
- ハッシュは、実際に配信されるファイルと1バイトでも違うと一致しません。改行コード(LFとCRLF)や末尾の改行の有無にも注意してください。ファイルを直接ハッシュしたい場合は、コマンドの「openssl dgst -sha384 -binary app.js | openssl base64 -A」でも計算できます。
- ライブラリのバージョンを更新したら、ハッシュも計算し直す必要があります。
- integrity属性には、空白で区切って複数のハッシュを書くこともできます。
よくある質問
SRI(Subresource Integrity)とは何ですか?
CDNなど外部から読み込むJS/CSSファイルが改ざんされていないかをブラウザが検証できるようにする仕組みです。integrity属性にファイル内容のハッシュ値を指定しておくと、実際に取得したファイルのハッシュ値と一致しない場合、ブラウザはそのリソースの読み込みを拒否します。
生成した値はそのファイル専用ですか?
はい。ハッシュ値はファイルの内容(1バイトでも)に依存するため、ファイルが少しでも変更されると異なる値になります。ファイルを更新した場合は必ずintegrity属性も再生成してください。
どのアルゴリズムを選べばよいですか?
SRI仕様ではSHA-256・SHA-384・SHA-512のいずれかが使えます。一般的にはSHA-384がよく使われますが、複数のアルゴリズムを空白区切りで併記することも可能です。