3.4.3.3 nonceとは

nounceとその仕組みについて学習します。

nonce (number used once)は、セキュアな通信で1回のみ使用される数値または値を指す暗号化用語です。Webセキュリティ、特にコンテンツ・セキュリティ・ポリシー(CSP)に関しては、特定のインライン・スクリプトの実行を許可するためにnonce属性が使用されます。

nonceの仕組みは次のとおりです:

  1. CSPとnonce - Webアプリケーションのコンテンツ・セキュリティ・ポリシー(CSP)を定義するときに、特定のnonce値を持つスクリプトのみの実行を許可するように指定できます。これにより、攻撃者はnonce値にアクセスできないため、悪意のあるスクリプトのインジェクションを阻止できます。
  2. 実装 - サーバーが、リクエストごとに一意のnonce値を生成してCSPヘッダーに含めます。実行を許可するインライン・スクリプトでは、スクリプト・タグにこのnonce値を含める必要があります。

次のnonceの例について考えてみます。

HTML (nonceがあるインライン・スクリプト)

<script nonce="random12345">
    console.log('This script will run because it has the correct nonce.');
</script>

HTML (nonceがないインライン・スクリプト)

<script>
    console.log('This script will be blocked by CSP because it lacks the correct nonce.');
</script>

この例では、正しいnonce random12345があるスクリプトの実行が許可されますが、他のスクリプトはブロックされ、Webアプリケーションのセキュリティが向上します。残りの違反を確認するには、ブラウザ・コンソールを確認する必要があります。