wtf*_*fzn 4 handlebars.js meteor meteor-blaze
我想知道三重花括号是否可以清除模板中的用户输入以保证XSS安全.<script>标签不会渲染,但其他令人毛骨悚然的XSS黑客呢?
提前致谢!
它不安全,因为您仍然可以运行恶意代码,如下所示:
Template.xx.helpers({
'bad':function() {
return "<a href="#" onclick="alert('compromised');">CLICK ME PLZ!</a>";
}
});
Run Code Online (Sandbox Code Playgroud)
模板
<template name="xx"> {{{bad}}} </template>
Run Code Online (Sandbox Code Playgroud)
这意味着用户需要单击该按钮,但您可以通过使用其他事件(例如onmouseover)使其更加确定:
浮动div可以占用所有空间并使用鼠标悬停来确保代码运行.这可以用作此示例中的返回值:
<div style="width:100%; height:100%; position: fixed;" onmouseover="console.log('haha');"></div>
Run Code Online (Sandbox Code Playgroud)
您还可以使用其他漏洞,例如通过CSS更改页面内容(使用content:或更高版本的z-index浮动div来更改页面内容.