50 lines
1.8 KiB
Ruby
50 lines
1.8 KiB
Ruby
csp_policy = {
|
|
:preserve_schemes => true,
|
|
:default_src => %w['self'],
|
|
:child_src => %w['self'],
|
|
:connect_src => %w['self'],
|
|
:font_src => %w['none'],
|
|
:form_action => %w['self'],
|
|
:frame_ancestors => %w['self'],
|
|
:frame_src => %w['self'],
|
|
:img_src => %w['self' data: www.gravatar.com *.wp.com tile.openstreetmap.org *.tile.openstreetmap.org *.tile.thunderforest.com tileserver.memomaps.de tile.tracestrack.com *.openstreetmap.fr],
|
|
:manifest_src => %w['self'],
|
|
:media_src => %w['none'],
|
|
:object_src => %w['self'],
|
|
:plugin_types => %w[],
|
|
:script_src => %w['self'],
|
|
:style_src => %w['self'],
|
|
:worker_src => %w['none'],
|
|
:report_uri => []
|
|
}
|
|
|
|
csp_policy[:connect_src] << Settings.matomo["location"] if defined?(Settings.matomo)
|
|
csp_policy[:img_src] << Settings.matomo["location"] if defined?(Settings.matomo)
|
|
csp_policy[:script_src] << Settings.matomo["location"] if defined?(Settings.matomo)
|
|
|
|
csp_policy[:img_src] << Settings.avatar_storage_url if Settings.key?(:avatar_storage_url)
|
|
csp_policy[:img_src] << Settings.trace_image_storage_url if Settings.key?(:trace_image_storage_url)
|
|
|
|
csp_policy[:report_uri] << Settings.csp_report_url if Settings.key?(:csp_report_url)
|
|
|
|
cookie_policy = {
|
|
:httponly => { :only => %w[_osm_session _osm_totp_token] }
|
|
}
|
|
|
|
SecureHeaders::Configuration.default do |config|
|
|
config.hsts = SecureHeaders::OPT_OUT
|
|
config.referrer_policy = "strict-origin-when-cross-origin"
|
|
|
|
if Settings.csp_enforce
|
|
config.csp = csp_policy
|
|
config.csp_report_only = SecureHeaders::OPT_OUT
|
|
elsif Settings.key?(:csp_report_url)
|
|
config.csp = SecureHeaders::OPT_OUT
|
|
config.csp_report_only = csp_policy
|
|
else
|
|
config.csp = SecureHeaders::OPT_OUT
|
|
config.csp_report_only = SecureHeaders::OPT_OUT
|
|
end
|
|
|
|
config.cookies = cookie_policy
|
|
end
|