integrity属性・とは?初心者向けにわかりやすく解説するSRIの基本と使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
integrity属性・とは?初心者向けにわかりやすく解説するSRIの基本と使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


integrity属性・とは?初心者向けにわかりやすく解説

ウェブサイトを作るとき、外部のファイルを読み込む場面があります。integrity属性は、その外部ファイルが配布元から改ざんされていないかを確認するための仕組みです。読み込む側のブラウザは、指定された ハッシュ値と実際のファイルの内容を比較し、もし食い違いがあればリソースを安全に読み込まないようにします。これにより、サプライチェーンの安全性が高まり、第三者による不正改ざんのリスクを減らせます。

この仕組みは、主に スクリプトスタイルシートといった外部リソースをページに組み込むときに使われます。SRI(Subresource Integrity)と呼ばれることもあり、ウェブ制作の基礎知識として覚えておくと安心です。

How it works — 仕組みをやさしく解説

外部ファイルを読み込む際、integrity属性にはそのファイルのハッシュ値が書かれています。ブラウザはファイルを取得した後、同じハッシュ関数で内容を計算し、属性に書かれた値と比べます。両者が一致すればファイルを安全に利用し、もし一致しなければそのファイルはブロックされ、エラーがコンソールに表示されます。

ポイントは次の2つです。まず、ハッシュアルゴリズムとして sha256、sha384、sha512 が使われることが多い点。次に、crossorigin属性を併用することが推奨される点です。これにより、CORSのポリシーに適合し、リソースの取得時の認証情報の扱いを適切に制御できます。

使い方の基本ステップ

  1. 読み込むファイルのハッシュを取得する。ハッシュはbase64でエンコードされた文字列になります。
  2. HTMLのリソースタグに integrity属性として algo-hash の形式で記述する。例として sha256- の後に続くベース64文字列を配置します。
  3. 可能であれば crossorigin属性を設定する。多くの場合 crossorigin='anonymous' を使います。

実務では、CDNから配布されるライブラリにはすでに SRI のハッシュ値が公開されていることが多いです。公式ドキュメントやリリースノートを確認して、正しいハッシュ値を使うことが重要です。

以下は実際の利用イメージです。重要な点属性名とエンコード形式、そして 正しいハッシュ値を使うことです。例は分かりやすいように簡略化しています。

例: <span>

同様に CSS ファイルにも同じ要領で適用します。

よく使われるハッシュアルゴリズム

<th>説明
アルゴリズムsha256
説明256ビットのハッシュ値を生成する
アルゴリズムsha384
説明384ビットのハッシュ値を生成する
アルゴリズムsha512
512ビットのハッシュ値を生成する

実務での注意点と落とし穴

重要なのは、SRIは「ファイルの改ざん検知」を目的とする機能であり、ファイルの出自や配布元の信頼性を保証するものではない点です。つまり、HTTPSを併用することが前提です。もし配布元が信頼できない場合や、リソースが途中で改ざんされる可能性がある場合には、SRIだけでは不十分です。適切なセキュリティ対策として、サーバーの設定(HTTPSの強制、CSPの導入など)と組み合わせて運用しましょう。

もう一つの注意点は、ハッシュの更新コストです。ライブラリのバージョンを更新する際には新しいハッシュを取得して、integrity属性を更新する必要があります。自動化ツールを使ってハッシュ値を再生成するワークフローを用意すると、手動ミスを減らせます。

まとめ

integrity属性は、ウェブサイトの外部リソースの安全性を高める有力な手段です。SRIという考え方を理解し、sha256・sha384・sha512などのアルゴリズムと crossorigin 属性を組み合わせて使うことで、不正なファイルの読み込みを防ぐことができます。初心者のうちからこの仕組みを知っておくと、サイトのセキュリティや信頼性を高める大きな力になります。


integrity属性の同意語

SRI属性
Subresource Integrity(サブリソース整合性)を表す属性。外部リソースのハッシュ値を指定して、読み込む際に改ざんされていないか検証します。主に script や link タグで使用され、セキュリティを強化します。
サブリソース整合性属性
HTML の integrity 属性の正式名称を日本語で表現したもの。外部ファイルのハッシュ値を指定して、改ざんを検知します。
整合性属性
データの完全性を担保するための属性。読み込むリソースのハッシュと実データを照合して、一致すれば安全に利用できます。
ハッシュ検証属性
ソースのハッシュ値を用いて検証する属性。改ざんの有無を事前にチェックする目的で使われます。
サブリソース検証属性
外部リソースの検証を目的とした属性の別称。読み込む前にハッシュを照合してデータの安全性を保ちます。

integrity属性の対義語・反対語

信頼性の欠如
integrity属性が担うデータの完全性・正当性が欠け、データが改ざんされている可能性が高い状態を指します。
未検証
リソースのハッシュ/署名検証が行われていない状態。検証なしではデータの正当性を保証できません。
改ざん
データが元の状態から変更され、正しくない情報を含む可能性がある状態を指します。
不整合
ハッシュ値とリソース本体が一致せず、データの整合性が崩れている状態を指します。
署名なし・検証なし
データの出所を証明する署名や検証が欠如しており、信頼性が低下している状態を示します。
セキュリティの脆弱化
完全性の確保が不十分で、外部からの改ざんや悪用に対して脆弱な状態を指します。
完全性の喪失
データが元の正確さ・完全性を失い、信頼性が大きく損なわれている状態を表します。
偽装・偽情報
データの出所や内容を偽って見せかける行為で、信頼性を著しく低下させます。

integrity属性の共起語

Subresource Integrity (SRI)
SRIとは、外部リソースの改ざんを検出するために、読み込むリソースのハッシュ値をintegrity属性に記述して検証する仕組みです。
integrity属性
HTMLの属性の一つで、外部リソースのハッシュ値を記述して、読み込み時に資源の整合性を検証します。
ハッシュ
資源データを一定の長さの文字列に変換した値のこと。integrityではこの値で改ざんを検知します。
SHA-256
SHA-2系のハッシュアルゴリズムの一つ。SRIでよく用いられる、リソースの整合性を検証するための値を作る際に使われます。
SHA-384
SHA-2系の別の長さのハッシュアルゴリズム。高いセキュリティを求める際に使用されます。
SHA-512
SHA-2系のもっと長いハッシュアルゴリズム。最も強力な整合性検証を提供します。
base64
ハッシュ値を表現する一般的な文字列エンコード形式。integrity属性では通常base64エンコードされた値を使用します。
crossorigin
外部リソースを読み込む際のクロスオリジンリクエストの挙動を指定する属性。anonymousまたはuse-credentialsが主な値です。
anonymous
crossorigin属性の値の一つ。認証情報を送信せずにリソースを取得します。
use-credentials
crossorigin属性の値の一つ。認証情報をリソースへ送信して取得します。
外部リソース
HTML側が読み込む外部のスクリプトやスタイルシートなどの資源のこと。integrityはこれらの改ざん検出に使われます。
スクリプトタグ
外部JavaScriptファイルを読み込むHTML要素。integrity属性をサポートしています。
linkタグ
外部CSSファイルを読み込むHTML要素。integrity属性を使って整合性を確認できます。
改ざん検出
資源が意図した内容と異なっていないかを確認すること。integrity属性はこの検出を可能にします。
セキュリティ
ウェブサイトの信頼性と安全性を高める対策の一つ。integrityは外部リソースの改ざん防止に寄与します。
信頼性
読み込むリソースが正規のものであると保証する度合い。integrityを使うと信頼性が高まります。
SHA-1
古いハッシュアルゴリズム。衝突の問題があるため、SRIでは避けるべきとされます。
ブラウザ互換性
現代の主要ブラウザはSRIをサポートしていますが、古いブラウザでは検証が動かない場合があります。
HTML5
integrity属性はHTML5で導入された機能です。
検証エラー
integrity検証に失敗した場合に表示されるエラー。資源が改ざんされた可能性を示します。

integrity属性の関連用語

integrity属性
Subresource Integrity(SRI)を利用して、外部リソースの改ざんを検知するためのHTML属性。資源の内容が指定したハッシュと一致しない場合、ブラウザはその資源を読み込みません。
Subresource Integrity(SRI)
ウェブページが外部リソースを読み込む際に、資源のハッシュ値を事前に指定して整合性を検証する仕組み。アルゴリズム名とBASE64でエンコードしたハッシュをintegrity属性に記述します。
crossorigin属性
SRIを正しく機能させるため、外部リソースのクロスオリジン要求時のCORS設定を指定する属性。通常はanonymousまたはuse-credentialsを設定します。
SHA-256
SRIでよく使われるハッシュアルゴリズムの一つ。資源の内容をSHA-256で計算し、BASE64エンコードした値をintegrityに記述します。
SHA-384
SRIで使われるハッシュアルゴリズムの一つ。SHA-384で計算したハッシュをBASE64エンコードしてintegrityに含めます。
SHA-512
SRIで使われるハッシュアルゴリズムの一つ。SHA-512で計算したハッシュをBASE64エンコードしてintegrityに含めます。
ハッシュ値
資源の内容を元に計算されるデジタル指紋。integrity属性にはアルゴリズム名とBASE64ハッシュの組み合わせで記述します。
base64
ハッシュ値を文字列として表現する際のエンコード形式。SRIでは多くの場合BASE64を用います。
資源の改ざん検知
SRIの主要目的。リソースが配布元以外の改ざんされていた場合、ブラウザが読み込みをブロックします。
資源の検証の流れ
HTMLのタグにintegrityとcrossoriginを設定。ブラウザが資源を取得後、実際の内容のハッシュを計算してintegrity値と比較。整合すれば読み込み、ずれていればブロックします。
リソース整合性検証の対象
外部のJavaScriptファイルやCSSファイル、CDN経由で配布される資源が対象です。
CDN
Content Delivery Networkの略。地理的に近いサーバーから資源を提供する仕組み。SRIを併用することで安全性を高めます。
scriptタグ
外部JavaScriptを読み込むHTMLタグ。integrity属性を追加して検証を有効にします。
linkタグ
外部CSSを読み込むHTMLタグ。integrity属性を追加して検証を有効にします。
SRIの検証エラー時の挙動
整合性が一致しない場合、ブラウザは該当資源の読み込みをブロックし、エラーメッセージをコンソールに出力します。
SRIハッシュの生成方法
資源の内容からSHA-256/384/512などのハッシュを作成し、BASE64でエンコードして「アルゴリズム-BASE64ハッシュ」という形式でintegrity属性に記述します。例: openssl dgst -sha256 -binary file.js | openssl base64 -A
セキュリティのベストプラクティス
外部リソースにはSRIを使い、可能ならCSPと併用。資源の更新時には新しいハッシュを再生成して更新します。
SRIの対応状況
主要な現代ブラウザはSRIをサポートしています。古いブラウザでは機能しない場合がある点に留意してください。
リソース更新時の運用
外部リソースを更新した場合は新しいハッシュを生成してintegrityを更新するか、SRIを使わない保証を避けるための運用を検討します。

前の記事: « 金剛夜叉明王・とは?共起語・同意語・対義語も併せて解説!

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
15059viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2459viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1097viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1075viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
963viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
924viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
887viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
865viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
817viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
814viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
743viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
725viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
627viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
627viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
611viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
564viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
547viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
523viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
514viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
489viws

新着記事

インターネット・コンピュータの関連記事