我注意到GitHub和Facebook现在都在实施这一政策,这限制了第三方脚本在他们的体验/站点内运行。
是否有一种方法可以使用JavaScript来检测文档是否正在针对CSP运行?我正在写一个bookmarklet,如果用户在一个不支持嵌入脚本标签的网站上,我想给他们一条消息。
发布于 2020-05-20 05:24:04
您可以尝试使用事件"securitypolicyviolation"
捕获CSP违规错误。
来自:https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent
示例:
document.addEventListener("securitypolicyviolation", (e) => {
console.log(e.blockedURI);
console.log(e.violatedDirective);
console.log(e.originalPolicy);
});
发布于 2014-01-10 01:44:14
那这个呢。对于慢速连接,可能应该提高超时时间。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);
发布于 2014-12-10 19:21:23
从https://github.com/angular/angular.js/blob/master/src/Angular.js#L1091中,函数noUnsafeEval
function noUnsafeEval() {
try {
/* jshint -W031, -W054 */
new Function('');
/* jshint +W031, +W054 */
return false;
} catch (e) {
return true;
}
}
https://stackoverflow.com/questions/19140169
复制相似问题