我一直在使用 Apache 的StringEscapeUtils
HTML 实体,但是如果你想转义 HTML 属性值,有没有标准的方法来做到这一点?我想使用该escapeHtml
功能不会削减它,否则为什么Owasp Encoder 接口会有两种不同的方法来处理这个问题?
有谁知道转义 HTML 属性与实体的关系以及在没有 Owasp 库的情况下如何处理属性编码?
我一直在使用 Apache 的StringEscapeUtils
HTML 实体,但是如果你想转义 HTML 属性值,有没有标准的方法来做到这一点?我想使用该escapeHtml
功能不会削减它,否则为什么Owasp Encoder 接口会有两种不同的方法来处理这个问题?
有谁知道转义 HTML 属性与实体的关系以及在没有 Owasp 库的情况下如何处理属性编码?
看起来这是Owasp 的 XSS 预防备忘单的第 2 条规则。请注意是说的位:
正确引用的属性只能用相应的引号进行转义
因此,我猜只要属性正确地用双引号或单引号界定并且您转义这些(即双引号(“)变为&单引号(')变为'(或'))那么你应该没问题。请注意,ApacheStringEscapeUtils.escapeHtml
将不足以完成此任务,因为它不会转义单引号 (');您应该使用 String 的replaceAll
方法来执行此操作。
否则,如果属性写成:<div attr=some_value>
那么您需要遵循该页面上的建议并且..
使用 &#xHH; 转义所有 ASCII 值小于 256 的字符 格式(或命名实体,如果可用)以防止切换出属性
不确定是否有非 Owasp 标准实现。但是,它认为最好不要以这种方式编写属性!
请注意,这仅在您输入标准属性值时有效,如果该属性是一个href
或某个 JavaScript 处理程序,那么情况就不同了。有关事件处理程序属性中的不安全代码可能发生的 XSS 脚本攻击示例,请参见:http ://ha.ckers.org/xss.html 。