javascript - 捕获内容安全策略 (CSP) 错误

标签 javascript content-security-policy

我使用此方法通过 eval 检测 CSP(也用于 AngularJS):

  function noUnsafeEval() {
    try {
      new Function('');
      return false;
    } catch (err) {
      return true;
    }
  }

但我手头没有带有 CSP 的服务器来对其进行彻底测试。

可靠吗?代码中存在new Function('')行会导致无法捕获的错误吗?

什么是err?那里捕获了哪种错误(ErrorTypeError 等)? CSP 错误的消息是什么意思?

我在 CSP 中找不到关于运行时错误的文档。

最佳答案

关于如何检测CSP,还有一个stackoverflow问题:How to detect Content Security Policy (CSP)它还显示了您的功能。

使用它应该是安全的,因为只要代码到达函数构造函数(即它之前没有被其他限制阻止),您总是会从 noUnsafeEval 获得返回值。

据我所知,如果 CSP 不允许不安全的 eval,它将抛出 EvalError ( mozilla )。但这可能因浏览器而异。

确定的最佳方法是对此进行测试。您可以使用 http://mockbin.org创建一个 HTTP 端点,该端点返回具有正确 CSP header 和您的函数的页面。我在这里做了这样一个垃圾箱:http://mockbin.org/bin/cc6029e5-8aac-4a54-8fd1-abf41e17042a .如果你打开它,打开开发控制台并调试代码,你会看到异常:

CSP Test


稍后编辑

您还可以在 W3C 建议/草案中找到此信息:CSP 1.1 , CSP 2 , CSP 3 .在 1.1 中,您会得到一个 SecurityError 而不是 EvalError。

关于javascript - 捕获内容安全策略 (CSP) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458188/

相关文章:

javascript - 如何使用 HTML5 的 pattern 属性仅验证 CSV 文件上传?

javascript - Node.js 异步 if 语句 GraphicsMagick

javascript - 从 jquery 中的 html 对象中删除禁用的属性

javascript - Google map 中带有链接的按钮

javascript - 未捕获的 FirebaseError : Messaging: This method is available in a Window context

X-Frame-Options 和 Content-Security-Policy header 之间的安全区别?

javascript - 如何使用 express/node.js 配置 CSP-headers?

security - "disown-opener"内容安全策略指令有什么作用?

http - 设置 script-src 'self' 和 frame-src 'unsafe-inline' 会相互冲突吗?

html - 这种应用内容安全策略的方法可以吗?