@@ -77,8 +77,10 @@ class ContentSecurityPolicy
7777 # All the directives that are not currently in a formal spec, but have
7878 # been implemented somewhere.
7979 BLOCK_ALL_MIXED_CONTENT = :block_all_mixed_content
80+ UPGRADE_INSECURE_REQUESTS = :upgrade_insecure_requests
8081 DIRECTIVES_DRAFT = [
81- BLOCK_ALL_MIXED_CONTENT
82+ BLOCK_ALL_MIXED_CONTENT ,
83+ UPGRADE_INSECURE_REQUESTS
8284 ] . freeze
8385
8486 SAFARI_DIRECTIVES = DIRECTIVES_1_0
@@ -90,7 +92,7 @@ class ContentSecurityPolicy
9092 ] . freeze
9193
9294 FIREFOX_DIRECTIVES = (
93- DIRECTIVES_2_0 - FIREFOX_UNSUPPORTED_DIRECTIVES
95+ DIRECTIVES_2_0 + DIRECTIVES_DRAFT - FIREFOX_UNSUPPORTED_DIRECTIVES
9496 ) . freeze
9597
9698 CHROME_DIRECTIVES = (
@@ -114,25 +116,26 @@ class ContentSecurityPolicy
114116 OTHER = "Other" . freeze
115117
116118 DIRECTIVE_VALUE_TYPES = {
117- BASE_URI => :source_list ,
118- BLOCK_ALL_MIXED_CONTENT => :boolean ,
119- CHILD_SRC => :source_list ,
120- CONNECT_SRC => :source_list ,
121- DEFAULT_SRC => :source_list ,
122- FONT_SRC => :source_list ,
123- FORM_ACTION => :source_list ,
124- FRAME_ANCESTORS => :source_list ,
125- FRAME_SRC => :source_list ,
126- IMG_SRC => :source_list ,
127- MANIFEST_SRC => :source_list ,
128- MEDIA_SRC => :source_list ,
129- OBJECT_SRC => :source_list ,
130- PLUGIN_TYPES => :source_list ,
131- REFLECTED_XSS => :string ,
132- REPORT_URI => :source_list ,
133- SANDBOX => :string ,
134- SCRIPT_SRC => :source_list ,
135- STYLE_SRC => :source_list
119+ BASE_URI => :source_list ,
120+ BLOCK_ALL_MIXED_CONTENT => :boolean ,
121+ CHILD_SRC => :source_list ,
122+ CONNECT_SRC => :source_list ,
123+ DEFAULT_SRC => :source_list ,
124+ FONT_SRC => :source_list ,
125+ FORM_ACTION => :source_list ,
126+ FRAME_ANCESTORS => :source_list ,
127+ FRAME_SRC => :source_list ,
128+ IMG_SRC => :source_list ,
129+ MANIFEST_SRC => :source_list ,
130+ MEDIA_SRC => :source_list ,
131+ OBJECT_SRC => :source_list ,
132+ PLUGIN_TYPES => :source_list ,
133+ REFLECTED_XSS => :string ,
134+ REPORT_URI => :source_list ,
135+ SANDBOX => :string ,
136+ SCRIPT_SRC => :source_list ,
137+ STYLE_SRC => :source_list ,
138+ UPGRADE_INSECURE_REQUESTS => :boolean
136139 } . freeze
137140
138141 CONFIG_KEY = :csp
@@ -196,7 +199,7 @@ def idempotent_additions?(config, additions)
196199 #
197200 # raises an error if the original config is OPT_OUT
198201 #
199- # 1. for non-source-list values (report_only, block_all_mixed_content),
202+ # 1. for non-source-list values (report_only, block_all_mixed_content, upgrade_insecure_requests ),
200203 # additions will overwrite the original value.
201204 # 2. if a value in additions does not exist in the original config, the
202205 # default-src value is included to match original behavior.
0 commit comments