在我的Java應用程序中,我正在阻止XSS攻擊。我想在我有句柄的HttpServletRequest對象中編碼URL和隱藏字段參數。HttpServletRequest - 快速編碼URL和隱藏字段參數的方法
我該怎麼做呢?
在我的Java應用程序中,我正在阻止XSS攻擊。我想在我有句柄的HttpServletRequest對象中編碼URL和隱藏字段參數。HttpServletRequest - 快速編碼URL和隱藏字段參數的方法
我該怎麼做呢?
不要那樣做。你讓它變得更加複雜。只在顯示過程中逃脫它。看到我的答案在您的其他主題:Java 5 HTML escaping To Prevent XSS
要在HTML頁面上正確顯示用戶輸入的數據,您只需確保通過String#replace
或類似的方式將任何特殊的HTML字符正確編碼爲實體。好消息是,很少有你需要編碼(用於此目的):
str = str.replace("&", "&").replace("<", "<");
您也可以替換>
如果你喜歡,但沒有必要。
這不僅僅是因爲XSS,而且也是爲了讓角色正確顯示。您可能還想要確保將常用拉丁集之外的字符轉換爲適當的實體,以防止字符集問題(UTF-8與Windows-1252等)的出現。
你也需要''',否則屬性中的內容將不安全。 – Kornel 2010-12-11 23:40:13
@porneL:只有當輸出的問題是作爲屬性值輸出時,並且只有當你使用雙引號才能引用屬性(HTML允許使用單引號或雙引號引用屬性)。 – 2010-12-11 23:46:08
您可以使用StringEscapeUtils從庫中的Apache Jakarta Commons Lang中
http://www.jdocs.com/lang/2.1/org/apache/commons/lang/StringEscapeUtils.html
你能澄清你的問題嗎?將它們編碼爲什麼? – 2010-02-23 15:33:17
我想編碼它們以便在HTML頁面中安全顯示字符轉義 – AJM 2010-02-23 15:35:44