CSP: script-src-attr

HTTP の Content-Security-Policy (CSP) における script-src-attr ディレクティブは、JavaScript でインラインイベントハンドラーを指定する際に、有効なソースを指定します。

このディレクティブは onclick のようなインラインスクリプトイベントハンドラーに対してのみ、有効なソースを指定します。 <script> 要素に直接読み込まれた URL や XSLT スタイルシートなど、スクリプト実行のきっかけとなる他の JavaScript ソースには適用されません。 (有益なソースは script-src を使用してすべての JavaScript スクリプトソースに対して指定することも、 script-src-elem を使用して <script> 要素に対してのみ指定することも可能です。)

CSP バージョン 3
ディレクティブ種別 フェッチディレクティブ
default-src による代替 あり。 このディレクティブがない場合、ユーザーエージェントは script-src ディレクティブを探し、両方ともない場合は、 default-src ディレクティブで代替します。

構文

script-src-attr ポリシーでは、1 つまたは複数のソースを許可することができます。

http
Content-Security-Policy: script-src-attr <source>;
Content-Security-Policy: script-src-attr <source> <source>;

script-src-attrscript-src と一緒に使用することができ、インラインハンドラーのチェックのために、このディレクティブを上書きすることができます。

http
Content-Security-Policy: script-src <source>;
Content-Security-Policy: script-src-attr <source>;

ソース

<source> は、 CSP ソース値にあるいずれかの値を取ることができます。

なお、この同じ値のセットはすべてのフェッチディレクティブ(と他の多くのディレクティブ)で使用できます。

違反の場合

この CSP ヘッダーがあったとします。

http
Content-Security-Policy: script-src-attr 'none'

…実行すると、以下のインラインイベントハンドラーはブロックされ、読み込まれたり実行されたりしません。

html
<button id="btn" onclick="doSomething()"></button>

一般に、インラインイベントハンドラーは addEventListener 呼び出しに置き換える必要があることに注意してください。

js
document.getElementById("btn").addEventListener("click", doSomething);

仕様書

Specification
Content Security Policy Level 3
# directive-script-src-attr

ブラウザーの互換性

BCD tables only load in the browser

関連情報