在 Rails 开发环境中允许不安全的脚本

Permitting an unsafe script in a Rails development environment

在开发环境中,我想在 Rails 应用程序中允许 script-src unsafe-inline。我正在尝试使用 heavens_door gem 来生成系统测试。

customizing content security policy on content security policy initializer.

它是不安全的,因为服务器是本地 Rails 服务器,但我如何配置我的 Rails 应用程序以允许它?

您应该在单独加载的 .js 文件中包含所有 Javascript 代码。然后,您可以在初始化程序中将受信任的来源添加到内容安全策略中,例如 config/initializers/csp.rb 如下所示:

my_custom_script_sources = ["https://kit.fontawesome.com", "http://localhost:3000"]
Rails.application.config.content_security_policy do |policy|
  policy.script_src(:self, *my_custom_script_sources)
end

您当然可以检查 Rails.env 并相应地设置自定义脚本源,这样您就不会在生产中泄露您的内部开发 url。

您还可以将 :unsafe_inline 添加到任何策略元素,但您可能不应该这样做。明确列出您的来源比允许任何内联脚本 运行 会消除对 XSS 的保护要安全得多。如果您无法将第 3 方组件更改为不使用内联 Javascript,您可能想要接受 :unsafe_inline 的风险。我不知道 heavens_door 不幸的是,我不确定是否是这样。

您可以使用 this tool 例如根据最佳实践评估您的 CSP。

感谢 Gabor Lengyel 提供的解决方案。总之,您只需将这一行添加到 ApplicationController

content_security_policy false

确保它没有被提交和推送到生产环境!