三括号 XSS 在 Meteor 中安全吗?

Are triple brackets XSS safe in Meteor?

我想知道三重大括号是否会净化模板中的用户输入以保证 XSS 安全。 <script> 标签不会呈现出来,但是其他令人毛骨悚然的 XSS 黑客呢?

提前致谢!

它不安全,因为您仍然可以 运行 恶意代码,例如:

Template.xx.helpers({
    'bad':function() {
        return "<a href="#" onclick="alert('compromised');">CLICK ME PLZ!</a>";
    }
});

模板

<template name="xx"> {{{bad}}} </template>

这意味着用户需要点击按钮,但您可以通过使用其他事件(例如 onmouseover)使它更加确定:

浮动 div 可以占用所有 space 并使用鼠标悬停以确保代码为 运行。这可以用作此示例中的 return 值:

<div style="width:100%; height:100%; position: fixed;" onmouseover="console.log('haha');"></div>

您还可以进行其他利用,例如通过 CSS 更改页面内容(使用 content: 或更高 z-index 浮动 divs 来更改页面内容。