Добавьте одноразовый номер CSP в рубиновый агент New Relic browser_timing_header - PullRequest
0 голосов
/ 13 февраля 2019

На основе 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.com и https://bam.nr-data.net в default-src для Content-Security-Policy, в которой мы хотим быть более конкретными, а непросто вслепую, чтобы все остальное вернулось к значениям по умолчанию.

Итак, у нас есть следующее, так как, кажется, все, что нужно агенту

# 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 и заставить агента вставить эти 2 тега сценария с нашим 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>
  ...
...