Merge pull request #418 from vincentbernat/feature/nofollow-links

html: add nofollow/noopener to links
This commit is contained in:
Benoît Latinier 2018-04-24 23:28:53 +02:00 committed by GitHub
commit 55dac39bdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -65,7 +65,7 @@ class TestHTML(unittest.TestCase):
examples = [ examples = [
('Look: <img src="..." />', 'Look: '), ('Look: <img src="..." />', 'Look: '),
('<a href="http://example.org/">Ha</a>', ('<a href="http://example.org/">Ha</a>',
'<a href="http://example.org/">Ha</a>'), '<a href="http://example.org/" rel="nofollow noopener">Ha</a>'),
('<a href="sms:+1234567890">Ha</a>', '<a>Ha</a>'), ('<a href="sms:+1234567890">Ha</a>', '<a>Ha</a>'),
('<p style="visibility: hidden;">Test</p>', '<p>Test</p>'), ('<p style="visibility: hidden;">Test</p>', '<p>Test</p>'),
('<script>alert("Onoe")</script>', 'alert("Onoe")')] ('<script>alert("Onoe")</script>', 'alert("Onoe")')]
@ -93,4 +93,4 @@ class TestHTML(unittest.TestCase):
}) })
renderer = html.Markup(conf.section("markup")).render renderer = html.Markup(conf.section("markup")).render
self.assertEqual(renderer("http://example.org/ and sms:+1234567890"), self.assertEqual(renderer("http://example.org/ and sms:+1234567890"),
'<p><a href="http://example.org/">http://example.org/</a> and sms:+1234567890</p>') '<p><a href="http://example.org/" rel="nofollow noopener">http://example.org/</a> and sms:+1234567890</p>')

View File

@ -50,6 +50,11 @@ def sanitize(tokenizer, document):
if HTML5LIB_VERSION > HTML5LIB_SIMPLETREE: if HTML5LIB_VERSION > HTML5LIB_SIMPLETREE:
builder = "etree" builder = "etree"
for link in domtree.findall(".//{http://www.w3.org/1999/xhtml}a"):
if link.get('href', None):
link.set("rel", "nofollow noopener")
else: else:
builder = "simpletree" builder = "simpletree"