File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Expand file tree Collapse file tree 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)
144144 val_unescaped = CGI . unescapeHTML ( attr_node . value ) . gsub ( Loofah ::HTML5 ::Scrub ::CONTROL_CHARACTERS , '' ) . downcase
145145 if val_unescaped =~ /^[a-z0-9][-+.a-z0-9]*:/ && ! Loofah ::HTML5 ::SafeList ::ALLOWED_PROTOCOLS . include? ( val_unescaped . split ( Loofah ::HTML5 ::SafeList ::PROTOCOL_SEPARATOR ) [ 0 ] )
146146 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
147154 end
148155 end
149156 if Loofah ::HTML5 ::SafeList ::SVG_ATTR_VAL_ALLOWS_REF . include? ( attr_name )
You can’t perform that action at this time.
0 commit comments