我在 Rails 应用程序中有一个内联样式标记,我正在尝试使用随机数将其列入白名单。
错误:Content Security Policy: The page’s settings observed the loading of a resource at inline (“style-src”). A CSP report is being sent.
使用invisible_captcha时,样式由助手注入(inject) gem :
<%= invisible_captcha nonce: true %>
比较 View 和 header 显示随机数已被添加到两者中,但它被添加到 script-src
而不是style-src
.
查看:<style media="screen" nonce="5Cq/QyoJ5Co+LdarO1uvrg==">
标题:Content-Security-Policy-Report-Only script-src 'self' https: 'nonce-5Cq/QyoJ5Co+LdarO1uvrg=='; style-src 'self' https:;
这是我的content_security_policy.rb:
Rails.application.config.content_security_policy do |config|
config.style_src :self, :https
end
Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
Rails.application.config.content_security_policy_nonce_directives = %w(style-src script-src)
为什么它会转到错误的指令,我怎样才能使它转到 style-src
?
最佳答案
是的,这会干扰您的 CSP(或者更准确地说,您的 CSP 会干扰您的 <script>
标记)。
使用哈希时,您需要计算每个的哈希 <script>
标记,并将 CSP header 中的哈希值输出为 script-src
。如果您放置文字 <script>
如果您的 ERB 文件中存在一个标记,Rails 无法知道该标记,并且它不会计算哈希值或将其添加到您的 header 中。
Rails(据我所知)不支持哈希作为源。您可以使用 secure-headers gem,它提供了 hashed_javascript_tag
使用方法代替 <script>
.
关于javascript - Rails 中 style-src 的随机数被错误添加到 script-src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63125907/