mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 09:11:17 +08:00
FEATURE: Use group based setting for unsafe-none COOP (#27783)
Followup 3ff7ce78e782c7d28c8b5a1a3f40a1de897d89a1 Basing this setting on referrer was too brittle -- the referrer header can easily be ommitted or changed. Instead, for the small amount of use cases that this site setting serves, we can use a group-based setting instead, changing it to `cross_origin_opener_unsafe_none_groups` instead.
This commit is contained in:
@ -1023,16 +1023,11 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def set_cross_origin_opener_policy_header
|
||||
response.headers[
|
||||
"Cross-Origin-Opener-Policy"
|
||||
] = if SiteSetting.cross_origin_opener_unsafe_none_referrers.present? &&
|
||||
SiteSetting
|
||||
.cross_origin_opener_unsafe_none_referrers
|
||||
.split("|")
|
||||
.include?(UrlHelper.relaxed_parse(request.referrer.to_s)&.host)
|
||||
"unsafe-none"
|
||||
if current_user.present? && SiteSetting.cross_origin_opener_unsafe_none_groups_map.any? &&
|
||||
current_user.in_any_groups?(SiteSetting.cross_origin_opener_unsafe_none_groups_map)
|
||||
response.headers["Cross-Origin-Opener-Policy"] = "unsafe-none"
|
||||
else
|
||||
SiteSetting.cross_origin_opener_policy_header
|
||||
response.headers["Cross-Origin-Opener-Policy"] = SiteSetting.cross_origin_opener_policy_header
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user