File tree 1 file changed +7
-0
lines changed
1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -144,6 +144,13 @@ def scrub_attribute(node, attr_node)
144
144
val_unescaped = CGI . unescapeHTML ( attr_node . value ) . gsub ( Loofah ::HTML5 ::Scrub ::CONTROL_CHARACTERS , '' ) . downcase
145
145
if val_unescaped =~ /^[a-z0-9][-+.a-z0-9]*:/ && ! Loofah ::HTML5 ::SafeList ::ALLOWED_PROTOCOLS . include? ( val_unescaped . split ( Loofah ::HTML5 ::SafeList ::PROTOCOL_SEPARATOR ) [ 0 ] )
146
146
attr_node . remove
147
+ elsif val_unescaped . split ( Loofah ::HTML5 ::SafeList ::PROTOCOL_SEPARATOR ) [ 0 ] == "data"
148
+ # permit only allowed data mediatypes
149
+ mediatype = val_unescaped . split ( Loofah ::HTML5 ::SafeList ::PROTOCOL_SEPARATOR ) [ 1 ]
150
+ mediatype , _ = mediatype . split ( ";" ) [ 0 ..1 ] if mediatype
151
+ if mediatype && !Loofah ::HTML5 ::SafeList ::ALLOWED_URI_DATA_MEDIATYPES . include? ( mediatype )
152
+ attr_node . remove
153
+ end
147
154
end
148
155
end
149
156
if Loofah ::HTML5 ::SafeList ::SVG_ATTR_VAL_ALLOWS_REF . include? ( attr_name )
You can’t perform that action at this time.
0 commit comments