Skip to content

Commit e6d52d3

Browse files
committed
revert 45a5c10
to prepare for a better fix
1 parent d1223a2 commit e6d52d3

File tree

2 files changed

+1
-41
lines changed

2 files changed

+1
-41
lines changed

lib/rails/html/sanitizer.rb

+1-18
Original file line numberDiff line numberDiff line change
@@ -141,25 +141,8 @@ def sanitize_css(style_string)
141141

142142
private
143143

144-
def loofah_using_html5?
145-
# future-proofing, see https://github.com/flavorjones/loofah/pull/239
146-
Loofah.respond_to?(:html5_mode?) && Loofah.html5_mode?
147-
end
148-
149-
def remove_safelist_tag_combinations(tags)
150-
if !loofah_using_html5? && tags.include?("select") && tags.include?("style")
151-
warn("WARNING: #{self.class}: removing 'style' from safelist, should not be combined with 'select'")
152-
tags.delete("style")
153-
end
154-
tags
155-
end
156-
157144
def allowed_tags(options)
158-
if options[:tags]
159-
remove_safelist_tag_combinations(options[:tags])
160-
else
161-
self.class.allowed_tags
162-
end
145+
options[:tags] || self.class.allowed_tags
163146
end
164147

165148
def allowed_attributes(options)

test/sanitizer_test.rb

-23
Original file line numberDiff line numberDiff line change
@@ -581,25 +581,6 @@ def test_exclude_node_type_comment
581581
assert_equal("<div>text</div><b>text</b>", safe_list_sanitize("<div>text</div><!-- comment --><b>text</b>"))
582582
end
583583

584-
def test_disallow_the_dangerous_safelist_combination_of_select_and_style
585-
input = "<select><style><script>alert(1)</script></style></select>"
586-
tags = ["select", "style"]
587-
warning = /WARNING: Rails::Html::SafeListSanitizer: removing 'style' from safelist/
588-
sanitized = nil
589-
invocation = Proc.new { sanitized = safe_list_sanitize(input, tags: tags) }
590-
591-
if html5_mode?
592-
# if Loofah is using an HTML5 parser,
593-
# then "style" should be removed by the parser as an invalid child of "select"
594-
assert_silent(&invocation)
595-
else
596-
# if Loofah is using an HTML4 parser,
597-
# then SafeListSanitizer should remove "style" from the safelist
598-
assert_output(nil, warning, &invocation)
599-
end
600-
refute_includes(sanitized, "style")
601-
end
602-
603584
%w[text/plain text/css image/png image/gif image/jpeg].each do |mediatype|
604585
define_method "test_mediatype_#{mediatype}_allowed" do
605586
input = %Q(<img src="data:#{mediatype};base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=">)
@@ -727,8 +708,4 @@ def libxml_2_9_14_recovery_lt_bang?
727708
# then reverted in 2.10.0, see https://gitlab.gnome.org/GNOME/libxml2/-/issues/380
728709
Nokogiri.method(:uses_libxml?).arity == -1 && Nokogiri.uses_libxml?("= 2.9.14")
729710
end
730-
731-
def html5_mode?
732-
::Loofah.respond_to?(:html5_mode?) && ::Loofah.html5_mode?
733-
end
734711
end

0 commit comments

Comments
 (0)