将CSP随机数添加到新的遗物红宝石代理browser_timing_header

时间:2019-02-12 22:26:35

标签: ruby-on-rails content-security-policy newrelic nonce

基于https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/compatibility-requirements-new-relic-browser

Content-Security-Policy: default-src 'self' https://js-agent.newrelic.com https://bam.nr-data.net

它说,只需将https://js-agent.newrelic.comhttps://bam.nr-data.net放在default-src的内容安全政策中,我们希望在其中更加具体,而不仅仅是盲目地让其他所有内容退回到默认。

所以我们有以下内容,因为这似乎是座席所需的全部

# config/initializers/content_security_policy.rb

...
policy.script_src  :self, 'bam.nr-data.net', 'js-agent.newrelic.com'
policy.connect_src :self, 'bam.nr-data.net'
...

但是,没有简单的方法可以将csp nonce添加到::NewRelic::Agent.browser_timing_header脚本中。我希望有一种方法可以让我只传递nonce并让代理将nonce插入这两个脚本标签,以便我们知道那些内联脚本是好的。

这是我当前的黑客,我想知道是否有更好的方法可以做到这一点。

# config/newrelic.yml

development:
  browser_monitoring:
    auto_instrument: false

# app/views/layouts/application.html.erb

<!DOCTYPE html>
  <html dir="ltr">
    <head>
      <%= csrf_meta_tags %>
      <%= csp_meta_tag %>
      <%= javascript_tag nonce: true do -%>
        <%= :NewRelic::Agent.browser_timing_header.gsub!("<script>", "").gsub!("</script>", "") %>
      <% end -%>
     ...
   </head>
  ...

0 个答案:

没有答案