Rails 5.2:设置CSP随机数的最佳实践

9
我们的应用程序使用Rails 5.2,使用webpacker来服务资源,而不是asset pipeline。我想知道设置script标签的nonce属性的最佳方法是什么。
在content_security_policy.rb中,有一个用于UJS的content_security_policy_nonce_generator,我想知道是否可以在没有任何副作用的情况下继续使用它。以下内容有效,只是想知道这样做的最佳实践是什么。
#initializers/content_security_policy.rb

# If you are using UJS then enable automatic nonce generation
Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) 

application.html.erb中,如果我想在脚本标签上添加nonce,我必须从请求中获取它。 根据以下内容:https://api.rubyonrails.org/classes/ActionDispatch/ContentSecurityPolicy/Request.html#method-i-content_security_policy_nonce
#app/views/layouts/application.html.erb

<!DOCTYPE html>
<html dir="ltr">
  <head>
    <title>FruitsMarket</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_pack_tag 'application' %>
    <%= javascript_pack_tag 'polyfills' %>
    <%= javascript_pack_tag 'application' %>
    <script type="text/javascript" nonce=<%= request.content_security_policy_nonce %>>
      alert('hi');
    </script>
  </head>

  <body>
    <%= yield %>
  </body>
</html>
1个回答

14

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接