Skip to content

Commit 1cd281f

Browse files
jammerwaretivie
authored andcommitted
fix(openLinksInNewWindow): add rel="noopener noreferrer" to links
Add rel="noreferrer" to links when openLinksInNewWindow is on. Also add noopener when openLinksInNewWindow is on. target="_blank" without also adding rel="noopener noreferrer" creates a vulnerability (since the site you're linking to has access to the window.opener by default. This adds rel="noopener noreferrer" to links generated by the makeHtml converter when openLinksInNewWindow is true. Closes #670
1 parent 58208e5 commit 1cd281f

10 files changed

+16
-16
lines changed

dist/showdown.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/showdown.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/showdown.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/showdown.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/subParsers/anchors.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ showdown.subParser('anchors', function (text, options, globals) {
4848
// to external links. Hash links (#) open in same page
4949
if (options.openLinksInNewWindow && !/^#/.test(url)) {
5050
// escaped _
51-
result += ' target="¨E95Eblank"';
51+
result += ' rel="noopener noreferrer" target="¨E95Eblank"';
5252
}
5353

5454
result += '>' + linkText + '</a>';
@@ -87,7 +87,7 @@ showdown.subParser('anchors', function (text, options, globals) {
8787
var lnk = options.ghMentionsLink.replace(/\{u}/g, username),
8888
target = '';
8989
if (options.openLinksInNewWindow) {
90-
target = ' target="¨E95Eblank"';
90+
target = ' rel="noopener noreferrer" target="¨E95Eblank"';
9191
}
9292
return st + '<a href="' + lnk + '"' + target + '>' + mentions + '</a>';
9393
});

src/subParsers/autoLinks.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ var simpleURLRegex = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'
2222
append = trailingPunctuation;
2323
}
2424
if (options.openLinksInNewWindow) {
25-
target = ' target="¨E95Eblank"';
25+
target = ' rel="noopener noreferrer" target="¨E95Eblank"';
2626
}
2727
return lmc + '<a href="' + link + '"' + target + '>' + lnkTxt + '</a>' + append + tmc;
2828
};
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
<p>My <a href="http://example.com" target="_blank">link</a> is <em>important</em></p>
2-
<p>My <a href="http://example.com" target="_blank">link</a> is <strong>important</strong></p>
1+
<p>My <a href="http://example.com" rel="noopener noreferrer" target="_blank">link</a> is <em>important</em></p>
2+
<p>My <a href="http://example.com" rel="noopener noreferrer" target="_blank">link</a> is <strong>important</strong></p>
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
<p><a href="www.google.com" target="_blank">foo</a></p>
2-
<p>a link <a href="http://www.google.com" target="_blank">http://www.google.com</a></p>
1+
<p><a href="www.google.com" rel="noopener noreferrer" target="_blank">foo</a></p>
2+
<p>a link <a href="http://www.google.com" rel="noopener noreferrer" target="_blank">http://www.google.com</a></p>
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
<p><a href="www.google.com" target="_blank">foo</a></p>
2-
<p>a link <a href="http://www.google.com" target="_blank">http://www.google.com</a></p>
1+
<p><a href="www.google.com" rel="noopener noreferrer" target="_blank">foo</a></p>
2+
<p>a link <a href="http://www.google.com" rel="noopener noreferrer" target="_blank">http://www.google.com</a></p>
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<p>this is <a href="http://www.google.com" target="_blank">http://www.google.com</a> autolink</p>
1+
<p>this is <a href="http://www.google.com" rel="noopener noreferrer" target="_blank">http://www.google.com</a> autolink</p>

0 commit comments

Comments
 (0)