ブラウザはダウンロードしたリソースのハッシュ値を計算し、指定されたハッシュ値と比較します。一致しない場合、リソースが改竄された可能性があると判断します。", "image": [ "https://javascript-jp.dev/thumbnail/126.webp" ], "author": { "@type": "Person", "name": "javascript-jp.dev", "url": "https://javascript-jp.dev" } }

HTML属性 `integrity` と `crossorigin` の解説

2024-10-18

HTMLにおけるintegritycrossorigin属性について

integrity属性

  • 使い方
    <script src="script.js" integrity="sha256-abcdef1234567890"></script>
    
    ブラウザはダウンロードしたリソースのハッシュ値を計算し、指定されたハッシュ値と比較します。一致しない場合、リソースが改竄された可能性があると判断します。

  • SHA-256ハッシュ値。
  • 目的
    リソースの改竄を検知する。

crossorigin属性

  • 使い方
    <script src="https://example.com/script.js" crossorigin="anonymous"></script>
    
    • anonymous: 認証情報を送信せず、レスポンスヘッダのAccess-Control-Allow-Originが"*"またはリクエスト元のオリジンと一致する場合にのみリクエストを許可します。
    • null: クロスオリジンリクエストを許可せず、同オリジンポリシーに従います。

  • anonymoususe-credentialsnull
  • 目的
    クロスオリジンリクエストを制御する。

クロスオリジンリクエスト (CORS)

  • 解決
    サーバー側でCORSヘッダを設定することで、クロスオリジンリクエストを許可することができます。
  • 制限
    ブラウザはセキュリティ上の理由でクロスオリジンリクエストを制限しています。
  • 定義
    異なるオリジン (ドメイン、ポート、プロトコル) 間のリクエスト。

integritycrossoriginの関係

  • しかし、クロスオリジンリクエストのセキュリティを強化するために、両者を組み合わせて使用することが推奨される場合があります。例えば、クロスオリジンリクエストで取得したリソースの改竄を検知するために、crossorigin属性とintegrity属性を同時に使用することができます。
  • integrity属性はリソースの改竄を検知するものであり、crossorigin属性はクロスオリジンリクエストを制御するものです。両者は独立した機能を持ちます。



HTML属性 integritycrossorigin の解説


<!DOCTYPE html>
<html>
<head>
  <title>クロスオリジンリクエストの例</title>
</head>
<body>
  <script src="https://example.com/script.js" integrity="sha256-abcdef1234567890" crossorigin="anonymous"></script>
</body>
</html>



  • Content Security Policy (CSP)
    CSPを使用して、許可されたリソースのリストを指定し、許可されていないリソースをブロックする。
  • サーバーサイドの検証
    サーバー側でリソースのハッシュ値を検証し、安全なリソースを提供する。
  • 直接ダウンロードして検証
    リソースを直接ダウンロードし、ハッシュ値を計算して検証する。
  • CORSヘッダを設定
    サーバー側でCORSヘッダを設定し、クロスオリジンリクエストを許可する。
  • JSONP
    JSONPを使用して、サーバー側でスクリプトタグを生成し、クロスオリジンリクエストを回避する。ただし、セキュリティリスクがあるため、推奨されない。
  • 同オリジンポリシーに従う
    リソースを同じオリジンから読み込むことで、クロスオリジンリクエストを回避する。

代替方法の比較

属性代替方法長所短所
integrity直接ダウンロードして検証シンプル手動操作が必要
サーバーサイドの検証安全サーバー側の処理が必要
CSP安全設定が複雑
crossorigin同オリジンポリシーに従うシンプル柔軟性が低い
JSONP柔軟性が高いセキュリティリスクがある
CORSヘッダを設定柔軟性が高いサーバー側の設定が必要

選択基準

  • 実装の容易さ
    同オリジンポリシーに従うが最も簡単。
  • 柔軟性
    JSONPやCORSヘッダを設定が最も柔軟。
  • セキュリティ
    CSPやサーバーサイドの検証が最も安全。

推奨方法

  • crossorigin属性
    CORSヘッダを設定が推奨される。JSONPはセキュリティリスクがあるため、可能な限り避ける。
  • integrity属性
    CSPやサーバーサイドの検証が推奨される。

注意

  • CSPの設定は複雑であり、誤った設定によりサイトの機能が制限される可能性がある。
  • JSONPはセキュリティリスクがあるため、可能な限り避ける。
  • 代替方法を選択する際には、セキュリティ、柔軟性、実装の容易さを考慮する必要がある。

html cross-domain cors



ポップアップブロック検知とJavaScript

ポップアップブロックを検知する目的ポップアップブロックはユーザーのプライバシーやセキュリティを保護するためにブラウザに組み込まれている機能です。そのため、ポップアップブロックが有効になっている場合、ポップアップを表示することができません。この状況を検知し、適切な対策を講じるために、JavaScriptを使用することができます。...


HTML5 Doctype を含む基本的な HTML テンプレート

HTML5 Doctype を使用する利点将来性 HTML5 は今後も進化し続ける最新規格です。HTML4 Doctype は時代遅れになりつつあり、将来的にサポートされなくなる可能性があります。新機能 HTML5 Doctype は、video、audio、canvas などの新しい要素と API を導入します。これらの機能により、より魅力的でインタラクティブな Web サイトを作成できます。...


テキストエリア自動サイズ調整 (Prototype.js)

Prototype. js を使用してテキストエリアのサイズを自動調整する方法について説明します。Prototype. js を読み込みます。window. onload イベントを使用して、ページの読み込み後にスクリプトを実行します。$('myTextarea') でテキストエリアの要素を取得します。...


順序付きリストのカスタマイズ方法

HTML、CSS、そしてHTML リストを使用することで、順序付きリストの番号をカスタマイズすることができます。リスト項目 <li>タグを使用して作成します。順序付きリスト <ol>タグを使用して作成します。例CSSを使用して、順序付きリストの番号をカスタマイズすることができます。...


CSS最小高さレイアウト解説

HTML、CSS、XHTMLにおける100%最小高さCSSレイアウトについて、日本語で解説します。100% 最小高さレイアウトは、要素の最小高さを親要素の100%に設定するCSSレイアウト手法です。これにより、要素が常に親要素と同じ高さになるよう確保することができます。...



SQL SQL SQL SQL Amazon で見る



Internet Explorer 7 で子要素の幅が意図せず崩れる?原因と解決策を解説

Internet Explorer 7 (IE7) では、絶対配置された親要素の子要素にパーセンテージ幅を設定すると、幅が意図せず崩れる場合があります。これは、IE7 の古いボックスモデルと CSS 2.1 の解釈に起因する問題です。原因この問題の根本的な原因は、IE7 が古いボックスモデルを使用していることです。このモデルでは、要素の幅はコンテンツ幅、パディング、ボーダーの合計で計算されます。一方、CSS 2.1 では、要素の幅はコンテンツ幅のみで計算されます。


ユーザーのタイムゾーン決定方法

HTML、ブラウザ、タイムゾーンの文脈で「ユーザーのタイムゾーンを決定する」とは、Webページのユーザーが現在いる地域の時間帯を特定することを指します。JavaScriptのIntl. DateTimeFormatオブジェクトを使用する Intl


HTML フォームの複数送信ボタン

HTML フォームでは、通常、送信ボタンは1つのみ存在します。しかし、特定のシナリオにおいて、複数の送信ボタンを使用することが有用な場合があります。より直感的なユーザーインターフェイス 複数のボタンを使用することで、ユーザーが意図するアクションを明確に選択できるようになります。


JavaScript、HTML、CSSでWebフォントを検出する方法

CSS font-family プロパティを使用するCSS font-family プロパティは、要素に適用されるフォントファミリーを指定するために使用されます。このプロパティを使用して、Webページで使用されているフォントのリストを取得できます。


オートコンプリート無効化設定

上記のコードでは、usernameという名前の入力フィールドにautocomplete="off"を設定しています。これにより、ブラウザは過去の入力履歴に基づいて自動的に値を提案しなくなります。autocomplete属性には、以下のような値を設定することもできます。