【问题标题】:Is this MustacheJS-Snippen safe against XSS attacks?这个 MustacheJS-Snippen 对 XSS 攻击安全吗?
【发布时间】:2017-03-30 23:18:18
【问题描述】:

我有一个带有以下图片的 MustacheJS 模板:

<div class="thumbnail" style='background-image: url({{avatar}});'></div>

{{avatar}} 变量是根据用户输入填充的,无需验证,用户可以输入他们想要的任何内容。

这是安全的,还是有人可以通过它传递一些邪恶的输入并执行 XSS?

【问题讨论】:

  • 不,这不安全。您需要验证和清理输入。
  • 我们必须查看您的确切代码。
  • @RoryMcCrossan 你能否提供一个输入值,它会导致 JavaScript 被执行?感谢您的回复!
  • @Feathercrown 你想看什么代码? avatar-variable 来自用户输入,它被传递到您可以在上面看到的模板。谢谢!
  • 好的 - 在这种情况下 mustache 会为您转义 HTML。仍然不理想,但至少它应该阻止任何 XSS

标签: javascript jquery html xss mustache


【解决方案1】:

我认为样式 XSS 无论如何在现代浏览器中不再适用(IE11 / Edge、最近的 Chrome 或 Firefox 都不会从 CSS 运行 JS)。

所以它也取决于浏览器版本,但即使这不是最佳实践,也很难想出一个真正有效的攻击(而且我对那里的措辞非常谨慎,可能不可能在最近的浏览器中利用这一点)。更是如此,因为正如您在评论中所展示的,Mustache html 会自动编码一些字符。

请注意,IE 可以切换到与X-UA-Compatible 的兼容模式,在这种情况下,它的行为与所选版本完全相同,具有该版本的所有漏洞,但由于 html 编码,它可能仍然无法利用。

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2013-03-22
    相关资源
    最近更新 更多