security: add Content-Security-Policy header for admin routes
Set a strict CSP on all /admin/* responses: default-src 'self', script/style 'unsafe-inline' (needed for the inline editor JS and layout CSS), img-src 'self' data:, frame-ancestors 'none'. Public API routes are unaffected. Bump ClassLength limit to 420 to accommodate the new helper.
This commit is contained in:
@@ -64,6 +64,19 @@ module Volumen
|
||||
before do
|
||||
options = request.env["rack.session.options"]
|
||||
options[:secure] = request.ssl? if options
|
||||
|
||||
if request.path_info.start_with?("/admin")
|
||||
headers "Content-Security-Policy" => [
|
||||
"default-src 'self'",
|
||||
"script-src 'self' 'unsafe-inline'",
|
||||
"style-src 'self' 'unsafe-inline'",
|
||||
"img-src 'self' data:",
|
||||
"font-src 'self'",
|
||||
"connect-src 'self'",
|
||||
"form-action 'self'",
|
||||
"frame-ancestors 'none'"
|
||||
].join("; ")
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
Reference in New Issue
Block a user