本文へスキップ

SRIハッシュ生成

Subresource Integrity Hash

貼り付けたか置いたスクリプトやスタイルシートのSubresource Integrity属性(sha256/384/512)を計算します。

CDNを指す`<script src>`は、そのCDNが利用者のブラウザで好きなコードを走らせてよいという、常時の許可です。Subresource Integrityの属性はそれを取り消します。ブラウザは、あなたが固定したハッシュと一致しないファイルの実行を拒みます。

⚡ ローカル処理、必要ならサーバーが補助しますsriintegritywebhash

配信するファイルをそのまま置いてください

実際に配信するスクリプトかスタイルシートです。そのままの内容をハッシュします。

ブラウザの WebCrypto でハッシュします。ブラウザが照合するときと同じダイジェストです。URL の入力欄はわざと置いていません。このページからリモートのファイルを取得してハッシュすると、CORS に阻まれるか SSRF の通り道になり、しかもブラウザはサーバーのようにホストを解決してから固定することができません。実際に配信するファイルを入れてください。

使い方

  1. ファイルかURLを渡します

    実際に配布するファイルそのものを置くか、URLを取得させます。ハッシュはバイト列に対して取るので、改行1つ違うファイルとURLからは別の属性が出ます。

  2. 属性をまるごとコピーします

    出力は`integrity="sha384-…"`です。`crossorigin="anonymous"`と一緒にタグへ貼ってください。これがないと、オリジンをまたぐリソースは不透明になり、完全性を確かめられません。

  3. 動くタグではなくバージョンを固定します

    `@latest`のURLに対するintegrityの属性は、CDNが新しいものを出した日にサイトを壊します。正確なバージョンを指し、両方を一緒に更新してください。

よくある質問

どのアルゴリズムを使えばよいですか。

sha384がふつうの選択で、たいていのCDNが公表しているのもそれです。sha256も受け付けられますし、sha512はより強いですが、この仕組みの弱いところはそこではありません。間違ったバージョンを固定することのほうです。

追加したらスクリプトが読み込まれなくなりました。

ほぼ必ず3つのうちのどれかです。CDN上でファイルが変わったか、`crossorigin="anonymous"`が抜けているか、配信されているものとは別のビルドからハッシュを取ったかです。最後のものは、たとえば圧縮したファイルと圧縮していないファイルの取り違えです。

最初から敵意のあるスクリプトからも、SRIは守ってくれますか。

いいえ。SRIが保証するのは、固定したとおりのバイト列が届くこと、それだけです。固定したそのバージョンにすでに裏口が仕込まれていたなら、SRIはその裏口を毎回忠実に届けます。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。

CSP作成

CSP Builder

案内に沿った入力か違反レポートからContent-Security-Policyを組み立て、各ディレクティブの意味を説明します。

ブラウザの中だけで動きます

ファイルのチェックサム

File Checksum

大きさを問わずファイルを流しながらハッシュし、貼り付けた期待値と突き合わせます。

ブラウザの中だけで動きます

セキュリティヘッダー診断

Security Header Scan

サイトのHSTS・CSP・フレーム・リファラ・権限の各ヘッダーを採点し、何を足すべきかを示します。

サーバーを使います

怪しいURLの確認

Suspicious URL Check

開く前にリンクの形(紛らわしい文字・IPそのままのホスト・@のごまかし・深いサブドメイン・妙なポート・短縮サービス)を調べ、望めばリダイレクトをたどってドメインの登録時期も引きます(評判データベースは使いません)。

ローカル処理、必要ならサーバーが補助します

Base64エンコード・デコード

Base64 Encoder & Decoder

テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。

ブラウザの中だけで動きます

流出パスワードの照合

Breach Check

そのパスワードがHave I Been Pwnedの流出データにあるかを、SHA-1ハッシュの先頭5文字だけをブラウザから送るk-匿名方式で確かめます。

ブラウザの中だけで動きます