Add rel="noopener noreferrer" to external links

Background:
https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerab
ility-ever-96e328301f4c#.hduwdbjlb
This commit is contained in:
Jermolene
2016-05-05 11:49:40 +01:00
parent 8a08eee4bd
commit 3a3754aebb
17 changed files with 22 additions and 16 deletions
@@ -42,7 +42,8 @@ exports.parse = function() {
attributes: { attributes: {
href: {type: "string", value: this.match[0]}, href: {type: "string", value: this.match[0]},
"class": {type: "string", value: "tc-tiddlylink-external"}, "class": {type: "string", value: "tc-tiddlylink-external"},
target: {type: "string", value: "_blank"} target: {type: "string", value: "_blank"},
rel: {type: "string", value: "noopener noreferrer"}
}, },
children: [{ children: [{
type: "text", text: this.match[0] type: "text", text: this.match[0]
@@ -106,6 +106,7 @@ exports.parseLink = function(source,pos) {
} }
node.attributes.href = {type: "string", value: URL}; node.attributes.href = {type: "string", value: URL};
node.attributes.target = {type: "string", value: "_blank"}; node.attributes.target = {type: "string", value: "_blank"};
node.attributes.rel = {type: "string", value: "noopener noreferrer"};
// Update the end position // Update the end position
node.end = closePos + 2; node.end = closePos + 2;
return node; return node;
@@ -40,7 +40,8 @@ exports.parse = function() {
attributes: { attributes: {
href: {type: "string", value: link}, href: {type: "string", value: link},
"class": {type: "string", value: "tc-tiddlylink-external"}, "class": {type: "string", value: "tc-tiddlylink-external"},
target: {type: "string", value: "_blank"} target: {type: "string", value: "_blank"},
rel: {type: "string", value: "noopener noreferrer"}
}, },
children: [{ children: [{
type: "text", text: text type: "text", text: text
+1
View File
@@ -34,6 +34,7 @@ DownloadSaver.prototype.save = function(text,method,callback,options) {
// Set up the link // Set up the link
var link = document.createElement("a"); var link = document.createElement("a");
link.setAttribute("target","_blank"); link.setAttribute("target","_blank");
link.setAttribute("rel","noopener noreferrer");
if(Blob !== undefined) { if(Blob !== undefined) {
var blob = new Blob([text], {type: "text/html"}); var blob = new Blob([text], {type: "text/html"});
link.setAttribute("href", URL.createObjectURL(blob)); link.setAttribute("href", URL.createObjectURL(blob));
+1
View File
@@ -102,6 +102,7 @@ Modal.prototype.display = function(title,options) {
var link = document.createElement("a"); var link = document.createElement("a");
link.setAttribute("href",tiddler.fields.help); link.setAttribute("href",tiddler.fields.help);
link.setAttribute("target","_blank"); link.setAttribute("target","_blank");
link.setAttribute("rel","noopener noreferrer");
link.appendChild(document.createTextNode("Help")); link.appendChild(document.createTextNode("Help"));
modalFooterHelp.appendChild(link); modalFooterHelp.appendChild(link);
modalFooterHelp.style.float = "left"; modalFooterHelp.style.float = "left";
@@ -3,4 +3,4 @@ tags: $:/tags/PageControls
caption: ~GitHub ribbon caption: ~GitHub ribbon
description: ~GitHub ribbon for tw5.com/dev description: ~GitHub ribbon for tw5.com/dev
<div class="github-fork-ribbon-wrapper right" style><div class="github-fork-ribbon" style="background-color:#DF4848;"><a href="https://github.com/Jermolene/TiddlyWiki5" target="_blank">Find me on ~GitHub</a></div></div> <div class="github-fork-ribbon-wrapper right" style><div class="github-fork-ribbon" style="background-color:#DF4848;"><a href="https://github.com/Jermolene/TiddlyWiki5" target="_blank" rel="noopener noreferrer">Find me on ~GitHub</a></div></div>
@@ -8,4 +8,4 @@ The "empty" edition of TiddlyWiki is a vanilla distribution, with no additional
The empty edition can be downloaded from: The empty edition can be downloaded from:
<a href="empty.html" target="_blank">empty.html</a> <a href="empty.html" target="_blank" rel="noopener noreferrer">empty.html</a>
@@ -8,4 +8,4 @@ The "full" edition of TiddlyWiki consists of all the available languages, themes
The full edition can be downloaded from: The full edition can be downloaded from:
<a href="editions/full/index.html" target="_blank">editions/full/index.html</a> <a href="editions/full/index.html" target="_blank" rel="noopener noreferrer">editions/full/index.html</a>
@@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki
The ''Résumé Builder'' edition of TiddlyWiki gets you started with a simple way to create a professional resume that you can save to the web or print. The ''Résumé Builder'' edition of TiddlyWiki gets you started with a simple way to create a professional resume that you can save to the web or print.
<a href="editions/resumebuilder/index.html" target="_blank">editions/resumebuilder/index.html</a> <a href="editions/resumebuilder/index.html" target="_blank" rel="noopener noreferrer">editions/resumebuilder/index.html</a>
@@ -6,4 +6,4 @@ type: text/vnd.tiddlywiki
The ''Text-Slicer'' edition of TiddlyWiki contains tools to help advanced users slice long texts up into individual tiddlers. The ''Text-Slicer'' edition of TiddlyWiki contains tools to help advanced users slice long texts up into individual tiddlers.
<a href="editions/text-slicer/index.html" target="_blank">editions/text-slicer/index.html</a> <a href="editions/text-slicer/index.html" target="_blank" rel="noopener noreferrer">editions/text-slicer/index.html</a>
@@ -18,16 +18,16 @@ Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or
Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will still be able to use the notes you take today. Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will still be able to use the notes you take today.
<div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;"> <div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;">
<a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank"> <a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="background-color:#FF8C19;" target="_blank" rel="noopener noreferrer">
{{$:/core/images/mail}} ~TiddlyWiki Mailing List {{$:/core/images/mail}} ~TiddlyWiki Mailing List
</a> </a>
<a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank"> <a href="http://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="background-color:#e52d27;" target="_blank" rel="noopener noreferrer">
{{$:/core/images/video}} ~TiddlyWiki on ~YouTube {{$:/core/images/video}} ~TiddlyWiki on ~YouTube
</a> </a>
<a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="background-color:#5E9FCA;" target="_blank"> <a href="https://twitter.com/TiddlyWiki" class="tc-btn-big-green" style="background-color:#5E9FCA;" target="_blank" rel="noopener noreferrer">
{{$:/core/images/twitter}} @~TiddlyWiki on Twitter {{$:/core/images/twitter}} @~TiddlyWiki on Twitter
</a> </a>
<a href="https://github.com/Jermolene/TiddlyWiki5" class="tc-btn-big-green" style="background-color:#444;" target="_blank"> <a href="https://github.com/Jermolene/TiddlyWiki5" class="tc-btn-big-green" style="background-color:#444;" target="_blank" rel="noopener noreferrer">
{{$:/core/images/github}} ~TiddlyWiki on ~GitHub {{$:/core/images/github}} ~TiddlyWiki on ~GitHub
</a> </a>
</div> </div>
@@ -3,7 +3,7 @@ tags: HelloThere
created: 201409040851 created: 201409040851
modified: 201409040851 modified: 201409040851
<a class="tc-float-right tc-bordered-image" href="http://classic.tiddlywiki.com/" target="_blank">[img width="200" [TiddlyWiki Classic.png]]</a> <a class="tc-float-right tc-bordered-image" href="http://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a>
The original [[Classic|TiddlyWikiClassic]] version of TiddlyWiki is still available at: The original [[Classic|TiddlyWikiClassic]] version of TiddlyWiki is still available at:
@@ -7,7 +7,7 @@ https://github.com/Jermolene/TiddlyWiki5/edit/master/editions/tw5.com/tiddlers/$
\end \end
\define innerMakeGitHubLink(linkText) \define innerMakeGitHubLink(linkText)
<$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(draftOfTiddler)$}}> <$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(draftOfTiddler)$}}>
<a href=<<makeGitHubLink>> class="tc-tiddlylink-external" target="_blank">$linkText$</a> <a href=<<makeGitHubLink>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer">$linkText$</a>
</$set> </$set>
\end \end
\define outerMakeGitHubLink(linkText) \define outerMakeGitHubLink(linkText)
+1 -1
View File
@@ -13,7 +13,7 @@ https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/tw5.com/tiddlers/$
\end \end
\define outerMakeGitHubLink() \define outerMakeGitHubLink()
<$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}> <$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}>
<a href=<<makeGitHubLink>> class="tc-tiddlylink-external" target="_blank"><$text text=<<makeGitHubLink>>/></a> <a href=<<makeGitHubLink>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<makeGitHubLink>>/></a>
</$set> </$set>
\end \end
<$list filter="[all[current]!is[system]!is[shadow]]"> <$list filter="[all[current]!is[system]!is[shadow]]">
@@ -36,7 +36,7 @@ tags: $:/tags/Macro
\define .link(_,to) <$link to="$to$">$_$</$link> \define .link(_,to) <$link to="$to$">$_$</$link>
\define .clink(_,to) <span class="doc-clink"><<.link """$_$""" "$to$">></span> \define .clink(_,to) <span class="doc-clink"><<.link """$_$""" "$to$">></span>
\define .dlink(_,to) <$macrocall $name=".link" _=<<.def "$_$">> to="$to$">/> \define .dlink(_,to) <$macrocall $name=".link" _=<<.def "$_$">> to="$to$">/>
\define .dlink-ex(_,to) <a href="$to$" class="tc-tiddlylink-external" target="_blank"><<.def "$_$">></a> \define .dlink-ex(_,to) <a href="$to$" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><<.def "$_$">></a>
\define .flink(to) <$macrocall $name=".link" _=<<.field {{$to$!!caption}}>> to="$to$"/> \define .flink(to) <$macrocall $name=".link" _=<<.field {{$to$!!caption}}>> to="$to$"/>
\define .mlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.mtitle "$_$">>/> \define .mlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.mtitle "$_$">>/>
\define .mlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/> \define .mlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/>
@@ -1,6 +1,6 @@
title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/banner title: $:/plugins/tiddlywiki/powered-by-tiddlywiki/banner
tags: $:/tags/PageTemplate tags: $:/tags/PageTemplate
<a href="http://tiddlywiki.com" target="_blank"> <a href="http://tiddlywiki.com" target="_blank" rel="noopener noreferrer">
[img width="160px" class="tc-powered-by-tiddlywiki-banner" [$:/plugins/tiddlywiki/powered-by-tiddlywiki/powered-by-tiddlywiki.svg]] [img width="160px" class="tc-powered-by-tiddlywiki-banner" [$:/plugins/tiddlywiki/powered-by-tiddlywiki/powered-by-tiddlywiki.svg]]
</a> </a>
+1
View File
@@ -97,6 +97,7 @@ RailroadWidget.prototype.patchLinks = function(node) {
if(child.attributes["data-tw-external"]) { if(child.attributes["data-tw-external"]) {
// External links are straightforward // External links are straightforward
child.setAttribute("target","_blank"); child.setAttribute("target","_blank");
child.setAttribute("rel","noopener noreferrer");
} else { } else {
// Each internal link gets its own onclick handler, capturing its own copy of target // Each internal link gets its own onclick handler, capturing its own copy of target
(function(myTarget) { (function(myTarget) {