6

我在考虑我的应用程序的 XSS 漏洞。在服务器端,我不清理输入或输出,所以

<script>alert(document.cookies)</script>

完全如此存储在数据库中。为了在客户端查看这个值,我使用 Mustache。如果这个脚本是由管理员执行的,当然很容易劫持他的会话。但是我注意到当您使用 {{}} 语法时,Mustache 默认会转义这些值 & \ " < >。我是否需要担心 XSS,当数据库中的值将被插入时

<p>{{value}}</p>

甚至

<p data-id='{{value}}'>something</p>

? 我是否应该查看我的 Mustache 模板以查找任何易受攻击的代码,或者除非我使用

<script>{{value}}</script>

我安全吗?

4

1 回答 1

2

好吧,您应该始终担心 :) 但是,是的,Mustache 实现了您在这里谈论的目标,保护您的示例免受 XSS 攻击(除非您将值直接输出到<script>标签中)。

注意:检查您使用的 Mustache 实现是否转义了单引号。显然,规范中没有这样做(https://github.com/mustache/spec/issues/69),但幸运的是,主要的实现还是避开了它。

于 2013-06-12T18:03:44.630 回答