Content-Security-Policy が 'strict-dynamic' を使用

はい!

MDNには、素晴らしい説明と例があります。

'strict-dynamic'ソース式は、マークアップに存在するスクリプトに、nonceまたはハッシュを付随させることによって明示的に与えられた信頼が、そのルートスクリプトによってロードされたすべてのスクリプトに伝播されることを指定します。

したがって、元のスクリプトが信頼されている(nonceを介して)限り、ブラウザは他のスクリプトを無制限にロードすることを許可します。そして、それらのスクリプトは信頼されているため、さらにロードできます!


注意点が1つあります。それは、スクリプトが「パーサー挿入」されないことです。これにより、strict-dynamicがXSS攻撃に悪用されるのを防ぎます。

たとえば、これは「パーサー挿入」され、ブロックされます。

document.head.appendChild("<script src='https://example.com/xss-attempt.js' />");

しかし、スクリプト要素をプログラムで構築することはHTML解析を伴わず、XSSベクトルである可能性がはるかに低いため、許可されます。

const script = document.createElement("script");
script.src = "https://example.com/script.js"
document.head.appendChild(script);

^^ これは基本的にloadScript()の仕組みです。

「いいね!」 3