GitHub と Facebook の両方が現在このポリシーを実装していることに気付きました。これにより、サードパーティのスクリプトがエクスペリエンス/サイト内で実行されるのを制限しています。
JavaScriptを使用してドキュメントが CSP に対して実行されているかどうかを検出する方法はありますか? ブックマークレットを作成していて、ユーザーがスクリプト タグの埋め込みをサポートしていないサイトにいる場合にメッセージを表示したいと考えています。
GitHub と Facebook の両方が現在このポリシーを実装していることに気付きました。これにより、サードパーティのスクリプトがエクスペリエンス/サイト内で実行されるのを制限しています。
JavaScriptを使用してドキュメントが CSP に対して実行されているかどうかを検出する方法はありますか? ブックマークレットを作成していて、ユーザーがスクリプト タグの埋め込みをサポートしていないサイトにいる場合にメッセージを表示したいと考えています。
これはどうですか。接続が遅い場合は、おそらくタイムアウトを増やす必要があります。Onload は私がそれを検出するために使用したもので、動作しているようです。ロードされた場合、CSP が明らかに有効になっていないか、不適切に構成されています。
var CSP = 0;
frame = document.createElement('script');
frame.setAttribute('id', 'theiframe');
frame.setAttribute('src', location.protocol+'//example.com/');
frame.setAttribute('onload', 'CSP=1;');
document.body.appendChild(frame);
setTimeout(function(){if (0 == CSP){alert("CSP IS ENABLED");}}, 250);
現在、出荷中のブラウザーでこれを行う方法はありません。
ただし、次のようなものは、仕様ごとに機能するはずであり、Chrome で実験的な Web プラットフォーム機能が有効になっている場合に機能しますchrome://flags/
。
function detectCSPInUse() {
return "securityPolicy" in document ? document.securityPolicy.isActive : false;
}
SecurityPolicy
インターフェース (実装されている場合に得られるものdocument.securityPolicy
) には、現在許可されているものに関する詳細を示すいくつかの属性があります。