外部リソースに Subresource Integrity(SRI)を使う
SRI は外部スクリプトやスタイルのハッシュを検証することで、改ざんされていないことを保証します。integrity 属性の生成と検証を学びましょう。
- 1
SRI は <script> タグと <link> タグに integrity 属性を追加します:integrity="sha384-<base64-hash>"。ブラウザーはダウンロードしたリソースのハッシュを計算し、integrity 属性と比較します。一致しなければ、リソースはブロックされます。これにより、CDN の侵害や MITM 攻撃による外部リソース経由の悪意あるコード注入を防げます。
- 2 ハッシュ計算ツール →
外部リソース (スクリプトや CSS ファイル) の SHA-384 ハッシュを計算します。ハッシュを base64 でエンコードします。integrity 属性は integrity="sha384-<base64-hash>" です。SRI には SHA-384 を使ってください (SHA-256 ではなく)。推奨されるアルゴリズムです。また、クロスオリジンのリソースに SRI を使うには crossorigin 属性も必要です。
- 3 SHA-3 / Keccak ハッシュ計算 →
あるいは、SRI に SHA-3-256 を使う方法もあります。SHA-384 が標準ですが、SHA-3 も最新のブラウザーでサポートされています。利用可能な中最も強いアルゴリズムを使ってください。ハッシュはリソースの正確なバイト列に対して計算しなければなりません。どんな変更 (空白、圧縮) でもハッシュは変わります。
よくある質問
- SRI ハッシュが一致しないとどうなりますか?
- ブラウザーはリソースをブロックし、違反をコンソールに報告します。リソースが不可欠な場合、ページが壊れることがあります。これは望ましい動作です。改ざんされたコードを読み込むより、壊れるほうがましです。SRI 違反を監視し、リソースを意図的に更新したときはハッシュも更新してください。
- SRI はすべての CDN 攻撃から守れますか?
- いいえ。SRI が防ぐのはリソース内容の改変 (改ざん、MITM) です。防げないもの:CDN のダウン (フォールバックを使う)、CDN が別のリソースを配信すること (URL の間違い)、CDN によるトラフィックのログ記録です。SRI は防御の 1 層にすぎません。HTTPS、CSP、信頼できる CDN と組み合わせてください。
このタスクを解決するワークフロー
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。 パイプライン
テキストのハッシュと整合性検証
入力テキストのハッシュを計算し、期待されるハッシュと比較して整合性を検証する。 パイプライン
テキストのハッシュと CRC32 チェックサム検証
データ整合性検証のために、暗号学的 SHA-256 ハッシュと CRC32 チェックサムの両方を計算する。 パイプライン
MD5 ハッシュ後に Base58 エンコード
MD5 ハッシュを計算し、コンパクトな表現のために Base58 としてエンコードする。 パイプライン
マルチハッシュ速度比較
入力をハッシュし、複数のハッシュアルゴリズムをベンチマークして速度と出力を比較する。 パイプライン
パスワード生成とハッシュ
ランダムパスワードを生成し、安全な保存のためにハッシュする。 パイプライン
SHA3-256 ハッシュと CRC32 チェックサム
SHA3-256 ハッシュを計算し、二重整合性検証のために CRC32 チェックサムを計算する。 パイプライン
SHA-512 ハッシュ後に Hex エンコード
SHA-512 ハッシュを計算し、可読性のために Hex としてエンコードする。 パイプライン
テキスト反転とハッシュ
テキストを反転し、その後反転結果の SHA-256 ハッシュを計算する。 パイプライン
テキストスクランブルとハッシュ
テキストをスクランブルし、その後スクランブル結果をハッシュする。 パイプライン
関連ツール
ハッシュ計算ツール
Compute MD5, SHA-1, SHA-256, or SHA-512 hashes with hex or Base64 output。無料、プライベート、100%クライアントサイド。 ツール
SHA-3 / Keccak ハッシュ計算
Compute SHA-3 (224/256/384/512) and Keccak-256 hashes。無料、プライベート、100%クライアントサイド。 ツール
HMAC ジェネレーター
Generate HMAC (Keyed-Hash Message Authentication Code) with SHA-1/256/512。無料、プライベート、100%クライアントサイド。 ツール