我有一个这样的输入标签
<input class="textBox" type="text" value="<%=ESAPI.encoder().canonicalize(query) %>" autocomplete="off" />
我尝试使用 ESAPI canonicalize 函数进行查询,"><script>alert(1);</script>
但它不起作用,我在浏览器中收到警报。我做对了吗?
您为上下文使用了错误的编码。您处于常规属性上下文中,因此您应该使用encodeForHTMLAttribute
.
顺便说一句,对于 Java,有一种模板语言具有上下文相关的自动转义https://code.google.com/p/hapax2/所以你不必
这很容易出错,并且可以与手动转义 SQL 相媲美,但难度更大。