コンテンツにスキップ

HTML Living Standard/nonce属性

出典: フリー教科書『ウィキブックス(Wikibooks)』

nonce属性

[編集]

nonce属性は、HTMLにおいてスクリプトの実行を制御するために使用される一度限りのトークンです。この属性は、Content Security Policy (CSP) と連携して使用され、CSPにおけるスクリプトの実行許可を制限するための仕組みとして重要です。特定のスクリプトの実行を許可するために、サーバーが生成した一意のトークン(nonce)をHTML要素に設定します。

基本構文

[編集]
<script nonce="random-token"></script>
  • script: スクリプトを含むHTML要素。
  • random-token: サーバーが生成する一度限りのトークン。CSPで設定されたnonceと一致する必要があります。

使用例

[編集]
CSPとの連携
<head>
  <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-random-token';">
</head>
<body>
  <script nonce="random-token">
    console.log('このスクリプトは実行されます');
  </script>
</body>

この例では、CSPポリシーで指定されたnonce「random-token」が、スクリプトタグ内のnonce属性と一致する場合に、そのスクリプトの実行が許可されます。

動作の概要

[編集]
  • Content Security Policy (CSP)との連携:
    • スクリプトタグに設定されたnonce属性は、CSPにおけるscript-src指令と連携して動作します。CSPが指定するnonceと一致するスクリプトのみが実行されます。
  • 一度限りのトークン:
    • nonceは一度限り使用され、リクエストごとに新たなトークンが生成されます。この特性により、攻撃者がトークンを予測することが困難になります。

nonce属性の利用シーン

[編集]
  • CSPによるスクリプト制御:
    • 外部からの悪意のあるスクリプト実行を防ぐため、nonce属性を用いて信頼できるスクリプトだけを実行可能にします。
  • セキュリティ強化:
    • クロスサイトスクリプティング(XSS)攻撃を防ぐため、HTML内でのスクリプト実行を制限する役割を果たします。

注意点

[編集]
  • 一意性の確保:
    • nonceトークンはリクエストごとに一意である必要があり、使い回しはできません。これにより、トークンの再利用を防ぎ、セキュリティが保たれます。
  • サーバーサイドの設定が必要:
    • nonce属性はサーバーサイドで動的に生成され、レスポンスとしてHTMLに埋め込まれます。CSPポリシーにもこのnonceを含める必要があります。
  • ブラウザサポート:
    • nonce属性は現代の主要なブラウザでサポートされていますが、CSP自体の設定はサーバー側で行う必要があります。

互換性

[編集]
互換性
ブラウザ サポート状況
Chrome 対応
Edge 対応
Firefox 対応
Safari 対応
Opera 対応

参考文献

[編集]

関連項目

[編集]