我在一个Rails应用程序中有一个单独的内联样式标签,我正在尝试用一个nonce来白名单它。
错误: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 nonce: true %>通过比较视图和标题,可以发现nonce被添加到这两个视图中,但是它被添加到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
发布于 2020-07-28 02:06:24
是的,这将干扰您的CSP (或者更确切地说,您的CSP会干扰您的<script>标记)。
在使用散列时,需要计算每个<script>标记的散列,并将散列作为script-src输出到CSP头中。如果您在您的ERB文件中放置了一个文字的<script>标记,Rails无法了解该标记,并且它不会计算哈希或将其添加到您的头中。
Rails (据我所知)不支持散列作为源。您可以使用安全报头 gem,它提供了一个要使用的hashed_javascript_tag方法而不是<script>。
https://stackoverflow.com/questions/63125907
复制相似问题