在开发环境中,我想允许script-src unsafe-inline
在Rails应用程序中。我试图使用heavens_door gem,生成系统测试。
在内容安全策略初始化器上定制内容安全策略。
它是不安全的,因为服务器是本地Rails服务器,但我如何配置我的Rails应用程序来允许它?
- https://github.com/amatsuda/heavens_door/issues/26
你应该在单独加载的.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的保护。你可能想要接受:unsafe_inline
的风险,但如果你没有办法改变第三方组件不使用内联Javascript。不幸的是,我不知道heavens_door
,我不确定情况是否如此。
例如,您可以使用此工具根据最佳实践评估您的CSP。
感谢Gabor Lengyel的解决方案。总之,您只需要将这一行添加到ApplicationController
content_security_policy false
确保它没有被提交并推送到生产环境!