我有一个关于用于xss保护的owasp ESAPI接口的问题。为了保持简单而简单,我正在使用fortify进行源代码审查。应用程序实现ESAPI并调用ESAPI.encoder()。canonicalize(用户输入)并且不进行任何进一步的验证并打印输出。这仍然容易受到xss PS的影响:反射点位于html元素内。我已经浏览了有关堆栈溢出中有关ESAPI接口的所有帖子,但无法得到它任何帮助将不胜感激
单独使用canonicalize
并不能阻止xss。它解码数据,但你想要相反,编码数据。
它不仅允许像<script>alert(1)</script>
这样的内容直通,而且还将<script>alert(1)</script>
从非可执行脚本解码为可执行脚本。
你想要的方法是encodeForHTML
。这将对数据进行编码,以便可以安全地插入到HTML上下文中,因此<
将成为<
等等。
另外,通过检查是否接受这些字符来检查您是否已经在进行HTML编码。一些模板语言和标签会自动进行编码。