2012-03-01 44 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