Javascriptはセキュリティ検証に整合性属性を使用します

Javascriptはセキュリティ検証に整合性属性を使用します

1. スクリプトタグを使用してファイルをインポートする

htmlでは、 scriptタグはsrc属性を通じて js ファイルをインポートできます。インポートされる js ファイルはローカルでもリモートでもかまいません。

1. ローカルファイルをインポートする

開発環境では通常、ローカルのjsファイルが導入されます。

<script src="./js/index.js"></script>


2. リモートファイルをインポートする

オンラインで展開した後は、通常cdnに配信され、リモートファイルを導入する必要があります。

のような:

<script src="https://cdn.xxx.xx/js/index.js"></script>


しかし、リモートファイルを導入する場合、該当ファイルが改ざんされると、ユーザーに影響を与える可能性があるという問題があります。 cdn一般的に信頼性が高いですが、ハッカーによる攻撃を受ける可能性も否定できません。

この場合、 scriptタグのintegrity属性を通じてセキュリティ検証を実行できます。

2. 整合性セキュリティ検証

integrity属性は、インポートされたjsファイルのhash値を設定します。ブラウザがjsファイルをダウンロードすると、 jsファイルに対してhash計算が実行されます。それらが一致している場合は正常に読み込まれますが、一致していない場合は読み込みと実行が拒否されます。

のような:

<スクリプト
    整合性="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
    </script>

1. VueのCDNリソースをインポートする

たとえば、Vue の CDN リソースを紹介します。

https://unpkg.com/[email protected]/dist/vue.global.js

https://www.srihash.org/ を通じてハッシュ値を生成できます。

整合性によりハッシュ値が生成されます:

最後に、スクリプト タグにintegrityの値を追加します。

<script src="https://unpkg.com/[email protected]/dist/vue.global.js"
    整合性="sha384-0k9//QJdpmfSdp5IK3oJjOYPfz42f2FE0goMLtK9Vq7aKllvc4Lnz7lHPHiFhvDP"
    クロスオリジン="匿名">
</スクリプト>

2. 正常かどうかを確認する

インポートされたリソースはcdnリソースであるため、直接変更することはできませんが、 integrity変更integrity

最終的にブラウザは次のエラーを報告します。

計算された SHA-256 整合性 'Wr5PnkpmZ3oQFRZLfDrI6fsePSMak5h8rW2rqq+mdWg=' を持つリソース 'https://unpkg.com/[email protected]/dist/vue.global.js' の 'integrity' 属性に有効なダイジェストが見つかりませんでした。リソースはブロックされています。

これは、 cdnファイルのhash値がintegrityと一致しないことを意味します。

JavaScript のセキュリティ検証に integrity 属性を使用する方法については、これで終わりです。スクリプトの整合性に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript の toLocaleString() での時間フォーマットに関する新しいアイデア
  • JavaScript の isPrototypeOf 関数
  • JavaScriptプロトタイプチェーンの詳細な説明
  • JavaScript の構成と継承の説明
  • jsイベント委譲の詳細な説明
  • nuxt.js 複数の環境変数の設定
  • JS における for、for...in、for...of、forEach の違いと使用例

<<:  HTML でのアンカーポイントの適用

>>:  http:// の代わりに // を使用する利点は何ですか (アダプティブ https)

推薦する

WeChatアプレットの手動および自動追跡の実装の詳細説明(Taro)

どの企業もユーザーベースを拡大したいのであれば、ユーザーの操作データを収集・分析する必要があり、その...

MySQL 5.7.33 インストール プロセスの詳細な図解

目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...

MySQL クラスター化インデックスのページ分割原理の分析例

この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...

Vueタブとキャッシュページを切り替えるいくつかの方法

目次1. 切り替え方法2. タブを動的に生成する3. キャッシュコンポーネント3.1 キープアライブ...

Jenkins + Docker + ASP.NET Core の自動デプロイメントの問題について (落とし穴を避ける)

このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネッ...

Vue-router プログラムナビゲーションの 2 つの実装コード

ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...

12個のJavascriptテーブルコントロール(DataGrid)が整理されています

DataGrid コントロールの DataSource プロパティがデザイン時に設定されている場合、...

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

MySQL がユーザー名とパスワードの漏洩を引き起こす可能性のある Riddle の脆弱性を公開

MySQL バージョン 5.5 および 5.6 を標的とする Riddle 脆弱性により、中間者攻撃...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

泡の小さな鋭角効果を実現するCSS

効果画像(境界線の色が薄すぎるので、{} で囲みます): { }参考リンク Pure CSS バブル...

Linux の一般的な Java プログラム起動スクリプトのコード例

シェルを起動する頻度は非常に低いですが。 。 。しかし、書くたびに、多くの jar ファイル パスを...

win2008 で mysql8.0.11 を mysql8.0.17 にアップグレードする詳細な手順

アップグレードの背景: MySQLの下位バージョンの脆弱性を解決するために、MySQLはMySQL ...

React を使って小さなプログラムを書くための Remax フレームワークのコンパイル プロセス分析 (推奨)

Remax は、実行時に構文制限のないソリューションを採用した React を使用して小規模なプロ...