2012-03-01 45 views
4

我一直在使用Apache的StringEscapeUtils为HTML实体,但如果你想转义HTML属性值,有没有一个标准的方法来做到这一点?我想使用escapeHtml函数不会削减它,因为否则为什么Owasp Encoder interface有两种不同的方法来处理这个问题?如何在没有Owasp Library的Java中转义HTML属性值?

有没有人知道什么是涉及转义的HTML属性与实体和如何处理属性编码的情况下,你没有Owasp库手?

回答

7

看起来这是Owasp's XSS Prevention Cheat Sheet的规则#2。请注意这里是比特说:

正确引用属性只能使用相应的 报价进行转义

因此,我想,只要属性被正确地用双引号或单引号,你界(即双引号(“)变为&”和单引号(')变为'(或')),那么你应该没问题。因为它不能逃避现实te(');你应该使用字符串的replaceAll方法来做到这一点。

否则,如果属性写的是:<div attr=some_value>则需要按照页面上的建议,并..

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

不知道是否有非OWASP标准实现这虽然。但是,它猜测最好不要以这种方式编写属性!

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