File tree Expand file tree Collapse file tree 3 files changed +18
-3
lines changed
Expand file tree Collapse file tree 3 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -61,10 +61,20 @@ def build_value
6161 build_sandbox_list_directive ( directive_name )
6262 when :media_type_list
6363 build_media_type_list_directive ( directive_name )
64+ when :require_trusted_types_for_list
65+ build_trusted_type_list_directive ( directive_name )
6466 end
6567 end . compact . join ( "; " )
6668 end
6769
70+ def build_trusted_type_list_directive ( directive )
71+ source_list = @config . directive_value ( directive )
72+ if source_list && !source_list . empty?
73+ escaped_source_list = source_list . gsub ( /[\n ;]/ , " " )
74+ [ symbol_to_hyphen_case ( directive ) , escaped_source_list ] . join ( " " ) . strip
75+ end
76+ end
77+
6878 def build_sandbox_list_directive ( directive )
6979 return unless sandbox_list = @config . directive_value ( directive )
7080 max_strict_policy = case sandbox_list
Original file line number Diff line number Diff line change @@ -286,7 +286,8 @@ def list_directive?(directive)
286286 source_list? ( directive ) ||
287287 sandbox_list? ( directive ) ||
288288 media_type_list? ( directive ) ||
289- require_sri_for_list? ( directive )
289+ require_sri_for_list? ( directive ) ||
290+ require_trusted_types_for_list? ( directive )
290291 end
291292
292293 # For each directive in additions that does not exist in the original config,
@@ -324,6 +325,10 @@ def require_sri_for_list?(directive)
324325 DIRECTIVE_VALUE_TYPES [ directive ] == :require_sri_for_list
325326 end
326327
328+ def require_trusted_types_for_list? ( directive )
329+ DIRECTIVE_VALUE_TYPES [ directive ] == :require_trusted_types_for_list
330+ end
331+
327332 # Private: Validates that the configuration has a valid type, or that it is a valid
328333 # source expression.
329334 def validate_directive! ( directive , value )
Original file line number Diff line number Diff line change @@ -147,8 +147,8 @@ module SecureHeaders
147147 end
148148
149149 it "supports require-trusted-types-for directive" do
150- csp = ContentSecurityPolicy . new ( { require_trusted_types_for : %(script) } )
151- expect ( csp . value ) . to eq ( "require-trusted-types-for script" )
150+ csp = ContentSecurityPolicy . new ( default_src : %w( 'self' ) , require_trusted_types_for : %(script) )
151+ expect ( csp . value ) . to eq ( "default-src 'self'; require-trusted-types-for script" )
152152 end
153153
154154 it "does not support style for require-trusted-types-for directive" do
You can’t perform that action at this time.
0 commit comments