如果没有Owasp库,如何在Java中转义HTML属性值?

时间:2012-03-01 11:30:51

标签: java html escaping owasp

我一直在使用Apache的StringEscapeUtils用于HTML实体,但是如果你想要转义HTML属性值,有没有一种标准的方法可以做到这一点?我想使用escapeHtml函数不会削减它,否则为什么Owasp Encoder interface有两种不同的方法可以解决这个问题?

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

1 个答案:

答案 0 :(得分:8)

看起来这是Owasp's XSS Prevention Cheat Sheet的规则#2。注意位在哪里说:

  

适当引用的属性只能与相应的转义   报价

因此,我想只要属性被双引号或单引号正确限制就可以逃脱这些(即双引号(“)变为& quot;单引号(')变为'(或'))那么你应该没问题。请注意,Apache的StringEscapeUtils.escapeHtml ,因为它不会逃避单引号(');你应该使用String的replaceAll方法来执行此操作。

否则,如果写入属性:<div attr=some_value>,则需要按照该页面上的建议进行操作..

  

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

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

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