mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-29 00:44:05 +09:00
Enforce a script policy that allows the importmap by hash
script-src 'self', object-src 'none' and base-uri 'self', enforced. The
two inline scripts the importmap helper emits are allowed by their
SHA-256, and the origins its URLs point to (a configured asset host, in
any form Rails accepts) are allowed by name. There is no per-request
nonce, so cached pages stay valid.
DISABLE_CONTENT_SECURITY_POLICY=true leaves the policy off, for an
install whose proxy or customization injects scripts.
(cherry picked from commit 562888251e)
Backport: 1.5.2 has no response cache, so the cached-page test is left out.
This commit is contained in:
1 parent
3a140f65b2
commit
c3616f81b4
4 files changed
+128
-24
No files matched your search
@@ -1,25 +1,18 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Define an application-wide content security policy.
|
||||
# See the Securing Rails Applications Guide for more information:
|
||||
# https://guides.rubyonrails.org/security.html#content-security-policy-header
|
||||
|
||||
# Rails.application.configure do
|
||||
# config.content_security_policy do |policy|
|
||||
# policy.default_src :self, :https
|
||||
# policy.font_src :self, :https, :data
|
||||
# policy.img_src :self, :https, :data
|
||||
# policy.object_src :none
|
||||
# policy.script_src :self, :https
|
||||
# policy.style_src :self, :https
|
||||
# # Specify URI for violation reports
|
||||
# # policy.report_uri "/csp-violation-report-endpoint"
|
||||
# end
|
||||
# Enforcing baseline policy. Scripts run only from this origin; the two inline
|
||||
# scripts the importmap helper emits are allowed by hash (InlineScriptHashes),
|
||||
# so there is no per-request nonce and rendered HTML stays cacheable.
|
||||
#
|
||||
# # Generate session nonces for permitted importmap and inline scripts
|
||||
# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
|
||||
# config.content_security_policy_nonce_directives = %w(script-src)
|
||||
# Nothing else is restricted: images, media, fonts, styles (including an
|
||||
# account's custom styles) and connections behave as before.
|
||||
#
|
||||
# # Report violations without enforcing the policy.
|
||||
# # config.content_security_policy_report_only = true
|
||||
# end
|
||||
# DISABLE_CONTENT_SECURITY_POLICY=true is the escape hatch for an install whose
|
||||
# proxy or customization injects scripts the policy would block.
|
||||
unless ENV["DISABLE_CONTENT_SECURITY_POLICY"] == "true"
|
||||
Rails.application.configure do
|
||||
config.content_security_policy do |policy|
|
||||
policy.script_src :self
|
||||
policy.object_src :none
|
||||
policy.base_uri :self
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user