SRI(サブリソース完全性)

SRIとは

SRI(Subresource Integrity、サブリソース完全性)は、CDNなど外部のサーバーから読み込むJavaScriptやCSSが、改ざんされていないことを、ブラウザがハッシュ値で検証する仕組みです。script や link タグの integrity 属性に、期待するハッシュ値を書きます。

SRIが必要な理由

外部から読み込むファイルは、配信元が侵害されたり、ドメインの運営者が代わったりすると、読み込んでいるすべてのサイトに、不正なコードが配られます。2024年には、多くのサイトが使っていたスクリプト配信のドメインが運営者の変更後に不正なコードを返すようになり、訪問者が不審なサイトへ転送される事態になりました。

SRIを付けておけば、ファイルの内容が1文字でも変わった時点で、ブラウザは実行も適用もしません。

SRIの仕組み

  1. ブラウザが、外部のファイルを取得する。
  2. ファイルのハッシュ値を計算し、integrity 属性の値と比べる。
  3. 一致すれば実行し、一致しなければ読み込みを止める。

使えるアルゴリズムは sha256、sha384、sha512 です。sha384 がよく使われます。外部のファイルには crossorigin="anonymous" が必要で、配信元がCORSを許可している必要があります。

SRIの確認方法

ページが読み込んでいる外部のスクリプトに、integrity 属性が付いているかを見ます。次のコマンドは、外部のURLを読み込む script タグを一覧します。

curl -s https://example.com/ | grep -o -E '<script[^>]*src="https?://[^"]*"[^>]*>'

表示された各行に、integrity= が含まれているかを確かめます。自サイトのドメインのものは、対象にしなくて構いません。

SRIの設定例

ハッシュ値は、ファイルから計算します。

curl -s https://cdn.example.com/lib.js | openssl dgst -sha384 -binary | openssl base64 -A

出力の先頭に sha384- を付けた文字列を、HTMLに書きます。

<script src="https://cdn.example.com/lib.js"
        integrity="sha384-ここに計算した値"
        crossorigin="anonymous"></script>

WordPressでは、wp_enqueue_script で読み込むスクリプトに、script_loader_tag フィルターで属性を足せます。

add_filter('script_loader_tag', function ($tag, $handle) {
    if ($handle === 'my-lib') {
        $tag = str_replace(' src=', ' integrity="sha384-ここに計算した値" crossorigin="anonymous" src=', $tag);
    }
    return $tag;
}, 10, 2);

よくある間違いと注意点

  • latest のような版を指定しないURLや、内容が頻繁に変わるファイル(解析タグ、広告タグ、アクセスする端末で内容が変わるスクリプト)には付けられません。更新のたびに読み込みが止まります。版を固定したURLに付けます。
  • crossorigin 属性を付け忘れると、外部のファイルは読み込まれません。
  • ライブラリの版を上げたときは、ハッシュ値も更新します。
  • 自サイトのサーバーから配るファイルに付けても、効果は限られます。HTMLとハッシュ値を同じサーバーが出しているため、そのサーバーが侵害されれば、両方が書き換えられます。

Webサイト セキュリティチェッカーで確認する

Webサイト セキュリティチェッカーは、別のドメインから読み込むスクリプトやスタイルシートに、integrity 属性が付いていないものがないかを診断します。読み込み元のドメインごとに、まとめて示します。

関連用語

関連する用語

サイトの設定を無料で確認する

サイトのURLを入力するだけで、SRI(サブリソース完全性) などの設定状況を診断できます。Webサイト セキュリティチェッカー「Security Checker X」は、登録なしで使えます。

デジタルマーケティング事業部 統括マネージャー

略歴:京都大学情報学研究科知能情報学専攻修士課程修了後、日経大手インターネットショッピングモールの開発部でエンジニアとしてシステム開発・運用に従事。同社新規モバイル事業の立ち上げに開発プロジェクトマネージャー、兼プロダクトマネージャーとして参画。その後、外資系大手製薬メーカーのデジタルマーケティング部門でシニアアソシエイトとして従事した後、2020年にエスライン・テクノロジーズのデジタルマーケティング事業部統括マネージャーに就任。カスタマーファーストでデジタルマーケティングの役立つ情報を日々発信中。

【MALINE】総合デジタルマーケティングツール
【特別価格】Digicert VMC
NEWS
  1. 1

    【NEWS】旅行比較サイト『TRAVEL HUB(トラベルハブ)』サービス提供開始のお知らせ

  2. 2

    オフィス移転のお知らせ

  3. 3

    【MALINE】マリン株式会社設立のお知らせ

  4. 4

    無料で使える「Excel版 一斉メール配信ツール」提供開始のお知らせ ~SMTP設定だけで今すぐメール一括送信~

  5. 5

    中小企業向けDXプラットフォーム『Hirameki 7』SEO/MEO支援オプション提供開始。Hirameki 7ご利用者様の集客効果を最大化!

カレンダーから記事を探す
2026年10月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
262728293031  
SEO検索順位チェッカー
Googleマップ/MEO順位チェックツール
【無料】メールアドレス生存確認ツール
【無料】Excel一斉メール送信ツール
メールアドレス漏洩・流出チェックツール
メールドメインブラックリスト判定ツール
DMARC/SPF/DKIM診断ツール
IPアドレス位置・住所特定ツール
自分のIPアドレス確認ツール
驚愕効果のSEO対策