0

我有一个这样的输入标签

<input class="textBox" type="text" value="<%=ESAPI.encoder().canonicalize(query) %>" autocomplete="off" />

我尝试使用 ESAPI canonicalize 函数进行查询,"><script>alert(1);</script> 但它不起作用,我在浏览器中收到警报。我做对了吗?

4

1 回答 1

1

您为上下文使用了错误的编码。您处于常规属性上下文中,因此您应该使用encodeForHTMLAttribute.

顺便说一句,对于 Java,有一种模板语言具有上下文相关的自动转义https://code.google.com/p/hapax2/所以你不必

  1. 手动确定您所处的环境
  2. 为该上下文手动选择正确的编码
  3. 手动编写代码以进行转义,在这种情况下,这很拗口,使模板更难阅读

这很容易出错,并且可以与手动转义 SQL 相媲美,但难度更大。

于 2013-04-16T07:59:35.683 回答