我在想我应用的XSS漏洞。在服务器端,我不会对输入或输出进行消毒,所以
<script>alert(document.cookies)</script>
完全存储在数据库中。要在客户端查看此值,我使用Mustache。如果这个脚本是由管理员执行的,那么当然很容易劫持他的会话。但是我注意到Mustache默认会逃避这些价值观。 \&#34; &LT; &GT;当您使用{{}}语法时。当数据库中的值插入
时,我是否需要担心XSS<p>{{value}}</p>
甚至
<p data-id='{{value}}'>something</p>
?我是否应该查看我的Mustache模板以查找任何易受攻击的代码,或者除非我使用
<script>{{value}}</script>
我很安全吗?
答案 0 :(得分:1)
嗯,你应该总是担心:)但是,是的,Mustache完成了你在这里谈论的目标,保护你的例子不受XSS的攻击(除非你将值直接输出到<script>
标签)
注意:检查您使用的Mustache实现是否使用单引号转义。它显然不符合规范(https://github.com/mustache/spec/issues/69),但主要的实现无论如何都要逃避它。