通过内容安全策略减轻XSS攻击

As promised, this feature was just enabled by default: CSP Frame Ancestors enabled by default

10 个赞

您好,
我目前正在我的网站上设置 Google AdSense,似乎缺少“在 /csp_reports 启用 CSP 违规报告收集”设置。我目前使用的是自托管的 Discourse 2.9.0.beta6 版本。

上面引用的图片是我缺少设置的截图。


上面是我 CSP 设置页面的截图,缺少“在 /csp_reports 启用 CSP 违规报告收集”选项。

如果您能提供任何帮助,我将不胜感激!另外,请告诉我我为 AdSense 设置的选项是否正确,我以前从未使用过它 :eyes:

3 个赞

抱歉,我之前在这里的回复已过时,因为大约一个月前,我们将 content_security_policy_collect_reports 设为了隐藏设置。你仍然可以启用它,但需要通过 Rails 控制台进行操作,如下所示:

./launcher enter app
...
rails c 
...
SiteSetting.content_security_policy_collect_reports = true

请注意,这会产生大量日志,我强烈建议你根本不要走这条路,只需启用 CSP,并在浏览器控制台打开的情况下使用多个浏览器(Chrome、Firefox、Safari)浏览网站。你会通过这种方式发现大多数问题。而且,以你当前的配置,你实际上允许了 CSP 所保护的几乎所有内容,所以你根本不需要报告。

6 个赞

也许我遗漏了什么,但我没有在设置 UI 中看到这些设置。

  • content_security_policy
  • content_security_policy_report_only
  • content_security_policy_collect_reports(我看到它现在被隐藏了)
  • content_security_policy_script_src

这些选项是否可用于托管实例?我没有在原始帖子或评论中看到任何关于这是限制的提及。

编辑: 也尝试通过主题设置安全策略。

按照原始帖子中的说明似乎不起作用。

我假设我所在的托管计划不允许这样做,即使是通过主题或主题组件完成的?

或者也许我只是做错了什么。

1 个赞

目前,Discourse 默认提供 CSP Level 2 策略,包含以下指令:

  • base-uri 限制 \u003cbase\u003e 元素的 URL

是否有选项可以覆盖 base-uri 标头的默认值?

1 个赞

\u003cbase\u003e 元素实际在什么场景下使用?

这会破坏 Discourse 的推送通知吗?

也许吧。可能需要一个更合适的设置。

1 个赞

帖子已拆分为新主题:使用安全图像的建议方法是什么?

你好,

请问如何绕过下面的问题?我已经将调用新 Function() 表达式的脚本添加到了 content_security_policy_script_src 中,但我的浏览器控制台仍然抱怨以下错误。我在哪里可以排除 unsafe-eval?谢谢!

Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive:

1 个赞

抱歉。如果我下面的说法是正确的,请忽略我之前的帖子。通过上面的帖子,我知道可以将“unsafe-eval”直接设置到 content_security_policy_script_src,并且控制台中不再报告任何 JS 错误。

1 个赞

也许可以看看 content security policy script src 网站设置?

1 个赞

是的。正如在之前的回复中所说,“unsafe-eval”可以直接添加到 content_security_policy_script_src 中,我以为只允许添加 URL 基础或完整 URL。

1 个赞