首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检测内容安全策略(CSP)

如何检测内容安全策略(CSP)
EN

Stack Overflow用户
提问于 2013-10-02 23:02:42
回答 6查看 13.1K关注 0票数 24

我注意到GitHub和Facebook现在都在实施这一政策,这限制了第三方脚本在他们的体验/站点内运行。

是否有一种方法可以使用JavaScript来检测文档是否正在针对CSP运行?我正在写一个bookmarklet,如果用户在一个不支持嵌入脚本标签的网站上,我想给他们一条消息。

EN

回答 6

Stack Overflow用户

发布于 2020-05-20 05:24:04

您可以尝试使用事件"securitypolicyviolation"捕获CSP违规错误。

来自:https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent

示例:

代码语言:javascript
复制
document.addEventListener("securitypolicyviolation", (e) => {
  console.log(e.blockedURI);    
  console.log(e.violatedDirective);    
  console.log(e.originalPolicy);
});
票数 9
EN

Stack Overflow用户

发布于 2014-01-10 01:44:14

那这个呢。对于慢速连接,可能应该提高超时时间。Onload是我用来检测它的东西,它似乎起作用了。如果它加载了,那么CSP显然没有被启用,或者它被错误地配置了。

代码语言:javascript
复制
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);
票数 7
EN

Stack Overflow用户

发布于 2014-12-10 19:21:23

https://github.com/angular/angular.js/blob/master/src/Angular.js#L1091中,函数noUnsafeEval

代码语言:javascript
复制
function noUnsafeEval() {
  try {
    /* jshint -W031, -W054 */
    new Function('');
    /* jshint +W031, +W054 */
    return false;
  } catch (e) {
    return true;
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19140169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档