summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
authorWu Cheng-Han2016-11-26 22:46:58 +0800
committerWu Cheng-Han2016-11-26 22:46:58 +0800
commit79d5b2c37f99bcfc8e86e8045557f0a0557f93c4 (patch)
tree470870a8224e01660f5254841393a2297a49160e /public
parentf86a9e0c4bbf852d2648430d5f7f3d837c40bd47 (diff)
Fix slide might able to add unsafe attribute on section tag which cause XSS [Security Issue]
Diffstat (limited to 'public')
-rw-r--r--public/js/render.js1
-rwxr-xr-x[-rw-r--r--]public/js/reveal-markdown.js5
2 files changed, 5 insertions, 1 deletions
diff --git a/public/js/render.js b/public/js/render.js
index 559530b0..a61fc8fb 100644
--- a/public/js/render.js
+++ b/public/js/render.js
@@ -1,5 +1,6 @@
// allow some attributes
var whiteListAttr = ['id', 'class', 'style'];
+window.whiteListAttr = whiteListAttr;
// allow link starts with '.', '/' and custom protocol with '://'
var linkRegex = /^([\w|-]+:\/\/)|^([\.|\/])+/;
// allow data uri, from https://gist.github.com/bgrins/6194623
diff --git a/public/js/reveal-markdown.js b/public/js/reveal-markdown.js
index ca22e09c..3c3e1f5b 100644..100755
--- a/public/js/reveal-markdown.js
+++ b/public/js/reveal-markdown.js
@@ -286,7 +286,10 @@
nodeValue = nodeValue.substring( 0, matches.index ) + nodeValue.substring( mardownClassesInElementsRegex.lastIndex );
node.nodeValue = nodeValue;
while( matchesClass = mardownClassRegex.exec( classes ) ) {
- elementTarget.setAttribute( matchesClass[1], matchesClass[2] );
+ var name = matchesClass[1];
+ var value = matchesClass[2];
+ if (name.substr(0, 5) === 'data-' || whiteListAttr.indexOf(name) !== -1)
+ elementTarget.setAttribute( name, filterXSS.escapeAttrValue(value) );
}
return true;
}