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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
script-src-attr

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報