rails-html-sanitizer 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rails-html-sanitizer might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/rails/html/sanitizer.rb +6 -2
- data/lib/rails/html/sanitizer/version.rb +1 -1
- data/test/sanitizer_test.rb +14 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 330722b1f148ac96ebebc529d2b971d2f32584bb
|
4
|
+
data.tar.gz: 5441eea2b71bd6786f38061d60db7c80f18896ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c346b077718dd1ebba5c1aecab78421e30b3dbda64a7a43ecf0cea96b3f25ea72f9b93dc2f7b36d11453d8249f87847ef4087f1bc1086812314e1ff3fcc67eef
|
7
|
+
data.tar.gz: 0e598d16bae9973b706e739ff87ea767d96859d2a27349890bb848c783161bfffccf99d26ffa231ee4e9a3ccb4dfe137ab76c6ef88eb6b32fee9f7dc3dfdb2c5
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Rails Html Sanitizers
|
2
2
|
|
3
|
-
In Rails
|
4
|
-
i.e. in the `sanitize`, `sanitize_css`, `strip_tags` and `strip_links` methods.
|
3
|
+
In Rails 4.2 and above this gem will be responsible for sanitizing HTML fragments in Rails
|
4
|
+
applications, i.e. in the `sanitize`, `sanitize_css`, `strip_tags` and `strip_links` methods.
|
5
5
|
|
6
|
-
|
6
|
+
Rails Html Sanitizer is only intended to be used with Rails applications. If you need similar functionality in non Rails apps consider using [Loofah](https://github.com/flavorjones/loofah) directly (that's what handles sanitization under the hood).
|
7
7
|
|
8
8
|
## Installation
|
9
9
|
|
data/lib/rails/html/sanitizer.rb
CHANGED
@@ -28,7 +28,7 @@ module Rails
|
|
28
28
|
|
29
29
|
Loofah.fragment(html).tap do |fragment|
|
30
30
|
remove_xpaths(fragment, XPATHS_TO_REMOVE)
|
31
|
-
end.text
|
31
|
+
end.text(options)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -120,7 +120,7 @@ module Rails
|
|
120
120
|
loofah_fragment.scrub!(:strip)
|
121
121
|
end
|
122
122
|
|
123
|
-
loofah_fragment
|
123
|
+
properly_encode(loofah_fragment, encoding: 'UTF-8')
|
124
124
|
end
|
125
125
|
|
126
126
|
def sanitize_css(style_string)
|
@@ -136,6 +136,10 @@ module Rails
|
|
136
136
|
def allowed_attributes(options)
|
137
137
|
options[:attributes] || self.class.allowed_attributes
|
138
138
|
end
|
139
|
+
|
140
|
+
def properly_encode(fragment, options)
|
141
|
+
fragment.xml? ? fragment.to_xml(options) : fragment.to_html(options)
|
142
|
+
end
|
139
143
|
end
|
140
144
|
end
|
141
145
|
end
|
data/test/sanitizer_test.rb
CHANGED
@@ -104,6 +104,11 @@ class SanitizersTest < Minitest::Test
|
|
104
104
|
assert_equal "Frozen string with no tags", full_sanitize("Frozen string with no tags".freeze)
|
105
105
|
end
|
106
106
|
|
107
|
+
def test_full_sanitize_allows_turning_off_encoding_special_chars
|
108
|
+
assert_equal '&', full_sanitize('&')
|
109
|
+
assert_equal '&', full_sanitize('&', encode_special_chars: false)
|
110
|
+
end
|
111
|
+
|
107
112
|
def test_strip_links_with_tags_in_tags
|
108
113
|
expected = "a href='hello'>all <b>day</b> long/a>"
|
109
114
|
input = "<<a>a href='hello'>all <b>day</b> long<</A>/a>"
|
@@ -173,7 +178,7 @@ class SanitizersTest < Minitest::Test
|
|
173
178
|
end
|
174
179
|
|
175
180
|
def test_should_allow_anchors
|
176
|
-
assert_sanitized %(<a href="foo" onclick="bar"><script>baz</script></a>), %(<a href=\"foo\"
|
181
|
+
assert_sanitized %(<a href="foo" onclick="bar"><script>baz</script></a>), %(<a href=\"foo\"></a>)
|
177
182
|
end
|
178
183
|
|
179
184
|
def test_video_poster_sanitization
|
@@ -441,6 +446,13 @@ class SanitizersTest < Minitest::Test
|
|
441
446
|
assert_sanitized %(<a href="http://legit">), %(<a href="http://legit">)
|
442
447
|
end
|
443
448
|
|
449
|
+
def test_sanitize_ascii_8bit_string
|
450
|
+
white_list_sanitize('<a>hello</a>'.encode('ASCII-8BIT')).tap do |sanitized|
|
451
|
+
assert_equal '<a>hello</a>', sanitized
|
452
|
+
assert_equal Encoding::UTF_8, sanitized.encoding
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
444
456
|
protected
|
445
457
|
|
446
458
|
def xpath_sanitize(input, options = {})
|
@@ -472,7 +484,7 @@ protected
|
|
472
484
|
end
|
473
485
|
|
474
486
|
def scope_allowed_tags(tags)
|
475
|
-
Rails::Html::WhiteListSanitizer.allowed_tags =
|
487
|
+
Rails::Html::WhiteListSanitizer.allowed_tags = tags
|
476
488
|
yield Rails::Html::WhiteListSanitizer.new
|
477
489
|
|
478
490
|
ensure
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-html-sanitizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafael Mendonça França
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-03-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: loofah
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
|
-
description: HTML sanitization
|
84
|
+
description: HTML sanitization for Rails applications
|
85
85
|
email:
|
86
86
|
- rafaelmfranca@gmail.com
|
87
87
|
- kaspth@gmail.com
|
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: '0'
|
119
119
|
requirements: []
|
120
120
|
rubyforge_project:
|
121
|
-
rubygems_version: 2.
|
121
|
+
rubygems_version: 2.4.5
|
122
122
|
signing_key:
|
123
123
|
specification_version: 4
|
124
124
|
summary: This gem is responsible to sanitize HTML fragments in Rails applications.
|