"a" => %w(href).freeze,
}.freeze
+ ALLOWED_CSS_PROPERTIES = %w[
+ color background-color
+ width
+ height
+ padding padding-left padding-right padding-top padding-bottom
+ margin margin-left margin-right margin-top margin-bottom
+ border border-left border-right border-top border-bottom border-radius border-style border-collapse border-spacing
+ font font-style font-variant font-weight font-stretch font-size line-height font-family
+ text-align
+ float
+ ].freeze
+
def allowlist
@allowlist ||= customize_allowlist(super.deep_dup)
end
allowlist[:attributes][:all].delete("name")
allowlist[:attributes]["a"].push("name")
+ allowlist[:attributes][:all].push("style")
+ allowlist[:css] = { properties: ALLOWED_CSS_PROPERTIES }
+
# allow class on code tags (this holds the language info from fenced
# code bocks and has the format language-foo)
allowlist[:attributes]["code"] = %w(class)
<tr><td align="center" colspan="2">bar</td></tr>
</table>
+<p>The <strong>style</strong> attribute can be used in raw HTML to apply custom formatting. The following CSS properties are allowed:</p>
+<pre><code>
+ color background-color
+ width
+ height
+ padding padding-left padding-right padding-top padding-bottom
+ margin margin-left margin-right margin-top margin-bottom
+ border border-left border-right border-top border-bottom border-radius border-style border-collapse border-spacing
+ font font-style font-variant font-weight font-stretch font-size line-height font-family
+ text-align
+ float
+</code></pre>
+
</body>
</html>
# samples taken from the Sanitize test suite
# rubocop:disable Layout/LineLength
STRINGS = [
+ [
+ '<span style="color: #333; background: url(\'https://example.com/evil.svg\')">hello</span>"',
+ '<span style="color: #333; ">hello</span>"'
+ ],
[
'<b>Lo<!-- comment -->rem</b> <a href="pants" title="foo" style="text-decoration: underline;">ipsum</a> <a href="http://foo.com/"><strong>dolor</strong></a> sit<br/>amet <style>.foo { color: #fff; }</style> <script>alert("hello world");</script>',
'<b>Lorem</b> <a href="pants" title="foo">ipsum</a> <a href="http://foo.com/"><strong>dolor</strong></a> sit<br>amet .foo { color: #fff; } '