aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/videos/shared
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-03-19 18:30:28 +0100
committerChocobozzz <me@florianbigard.com>2018-03-19 18:30:28 +0100
commit632c5e3629c2432371bb6339ad883208bff64ac2 (patch)
tree4f82091729030ded18b888d5ed3524f49d701b11 /client/src/app/videos/shared
parent9af61e84309c23ffbfd7562435a5fadd86cdf20c (diff)
downloadPeerTube-632c5e3629c2432371bb6339ad883208bff64ac2.tar.gz
PeerTube-632c5e3629c2432371bb6339ad883208bff64ac2.tar.zst
PeerTube-632c5e3629c2432371bb6339ad883208bff64ac2.zip
More secure target blank links
Diffstat (limited to 'client/src/app/videos/shared')
-rw-r--r--client/src/app/videos/shared/markdown.service.ts19
1 files changed, 10 insertions, 9 deletions
diff --git a/client/src/app/videos/shared/markdown.service.ts b/client/src/app/videos/shared/markdown.service.ts
index 9d73efa46..dd8ff20d8 100644
--- a/client/src/app/videos/shared/markdown.service.ts
+++ b/client/src/app/videos/shared/markdown.service.ts
@@ -52,18 +52,19 @@ export class MarkdownService {
52 return self.renderToken(tokens, idx, options) 52 return self.renderToken(tokens, idx, options)
53 } 53 }
54 54
55 markdownIt.renderer.rules.link_open = function (tokens, idx, options, env, self) { 55 markdownIt.renderer.rules.link_open = function (tokens, index, options, env, self) {
56 // If you are sure other plugins can't add `target` - drop check below 56 const token = tokens[index]
57 const aIndex = tokens[idx].attrIndex('target')
58 57
59 if (aIndex < 0) { 58 const targetIndex = token.attrIndex('target')
60 tokens[idx].attrPush(['target', '_blank']) // add new attribute 59 if (targetIndex < 0) token.attrPush([ 'target', '_blank' ])
61 } else { 60 else token.attrs[targetIndex][1] = '_blank'
62 tokens[idx].attrs[aIndex][1] = '_blank' // replace value of existing attr 61
63 } 62 const relIndex = token.attrIndex('rel')
63 if (relIndex < 0) token.attrPush([ 'rel', 'noopener noreferrer' ])
64 else token.attrs[relIndex][1] = 'noopener noreferrer'
64 65
65 // pass token to default renderer. 66 // pass token to default renderer.
66 return defaultRender(tokens, idx, options, env, self) 67 return defaultRender(tokens, index, options, env, self)
67 } 68 }
68 } 69 }
69 70