7

我一直在使用 Apache 的StringEscapeUtilsHTML 实体,但是如果你想转义 HTML 属性值,有没有标准的方法来做到这一点?我想使用该escapeHtml功能不会削减它,否则为什么Owasp Encoder 接口会有两种不同的方法来处理这个问题?

有谁知道转义 HTML 属性与实体的关系以及在没有 Owasp 库的情况下如何处理属性编码?

4

1 回答 1

10

看起来这是Owasp 的 XSS 预防备忘单的第 2 条规则。请注意是说的位:

正确引用的属性只能用相应的引号进行转义

因此,我猜只要属性正确地用双引号或单引号界定并且您转义这些(即双引号(“)变为&单引号(')变为'(或'))那么你应该没问题。请注意,ApacheStringEscapeUtils.escapeHtml不足以完成此任务,因为它不会转义单引号 (');您应该使用 String 的replaceAll方法来执行此操作。

否则,如果属性写成:<div attr=some_value>那么您需要遵循该页面上的建议并且..

使用 &#xHH; 转义所有 ASCII 值小于 256 的字符 格式(或命名实体,如果可用)以防止切换出属性

不确定是否有非 Owasp 标准实现。但是,它认为最好不要以这种方式编写属性!

请注意,这仅在您输入标准属性值时有效,如果该属性是一个href或某个 JavaScript 处理程序,那么情况就不同了。有关事件处理程序属性中的不安全代码可能发生的 XSS 脚本攻击示例,请参见:http ://ha.ckers.org/xss.html 。

于 2012-03-01T14:08:47.243 回答