【问题标题】:ContentSecurityPolicyViolation违反内容安全政策
【发布时间】:2016-07-19 00:15:50
【问题描述】:

我正在尝试使用 Lift 3 和 lift-ng (Angular) 实现一个基本的聊天应用程序。大多数情况下,这是有效的。但是,我在(服务器端)日志中收到此警告:

[qtp1721931908-24] 警告 net.liftweb.http.ContentSecurityPolicyViolation - 得到一个内容 我们无法解释的安全违规报告: 'Full({"csp-report":{"document-uri":"http://localhost:8081/","re​​ferrer":"","violated-directive":"script-src '不安全评估' 'self'","有效指令":"script-src","original-policy":"default-src '自己'; img-src *; script-src 'unsafe-eval' 'self';样式-src'自我' '不安全的内联';报告-uri /lift/content-security-policy-report","blocked-uri":"inline","status-code":200}})'。

我想知道的是如何追踪导致违规的原因?我很不清楚代码或绑定的哪一部分可能会出现,或者如何缩小范围而不必煞费苦心地注释掉代码库的每个部分。

我可以通过在我的Boot.scala 中设置这个SecurityRule 轻松摆脱违规:

LiftRules.securityRules = () => {
  SecurityRules(content = Some(ContentSecurityPolicy(
    scriptSources = List(ContentSourceRestriction.Self,
      ContentSourceRestriction.UnsafeInline,
      ContentSourceRestriction.UnsafeEval)
  )))
}

但是,我想避免使用不安全的内联/评估。

【问题讨论】:

    标签: lift content-security-policy


    【解决方案1】:

    如果您查看浏览器的开发者控制台,它可能包含指向内联代码的链接。例如

    当我点击“hash:2:0”时,它把我带到了页面的 html 源代码,第 2 行,字符 0,这正是违规代码所在的位置:

    需要注意的一点是,很多插件(例如 lastpass)都会生成此警报。确保在测试时禁用所有插件。

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2019-04-06
      • 2016-03-03
      • 2016-01-14
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多