Mustache XSS 是否是防 XSS 的?

Zia*_*rno 5 xss mustache

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

<script>alert(document.cookies)</script>
Run Code Online (Sandbox Code Playgroud)

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

<p>{{value}}</p>
Run Code Online (Sandbox Code Playgroud)

甚至

<p data-id='{{value}}'>something</p>
Run Code Online (Sandbox Code Playgroud)

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

<script>{{value}}</script>
Run Code Online (Sandbox Code Playgroud)

我安全吗?

Ben*_*pan 2

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

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