【エスアールアイ】
SRI(サブリソース完全性) とは?
💡 外部ファイルの指紋照合、すり替え防止の最後の砦
📌 このページのポイント
SRIって何なの?外部ファイルの改ざんを防ぐって聞いたけど。
なんでそんな仕組みが必要なの?CDNって信頼できるサービスじゃないの?
そんなこと本当に起きるの?
使い方は難しいの?
すごく簡単だよ。たとえば <script src="https://cdn.example.com/lib.js" integrity="sha384-abc123..." crossorigin="anonymous"></script> みたいに書くだけ。ハッシュ値はshasum コマンドやオンラインツールで生成できるし、cdnjsやjsDelivrなどの主要CDNはコピペ用のintegrity付きタグを提供してくれているよ
crossoriginも一緒に書くのはなんでなの?
ハッシュのアルゴリズムはどれを使えばいいの?
SRIを導入するときに気をつけることってあるの?
CDN側がファイルを正規にアップデートしたらハッシュが変わるから、integrityの値も更新しないとサイトが壊れる可能性があるよ。だからバージョン固定のURLを使うのが鉄則だね。あとContent Security Policyのrequire-sri-forディレクティブを使えば、SRIなしの外部リソース読み込みを一律ブロックすることもできるよ
📖 おまけ:英語の意味
「Subresource Integrity」 = サブリソースの完全性
💬 subresource(副リソース)はHTMLから読み込まれるJS・CSSなどの外部ファイルのこと。integrity(完全性)はデータが改ざんされていない状態を指す言葉で、「外部ファイルが本物かどうかを保証する」という意味の名前だよ