2010-02-23 51 views
0

在我的Java應用程序中,我正在阻止XSS攻擊。我想在我有句柄的HttpServletRequest對象中編碼URL和隱藏字段參數。HttpServletRequest - 快速編碼URL和隱藏字段參數的方法

我該怎麼做呢?

+0

你能澄清你的問題嗎?將它們編碼爲什麼? – 2010-02-23 15:33:17

+0

我想編碼它們以便在HTML頁面中安全顯示字符轉義 – AJM 2010-02-23 15:35:44

回答

1

要在HTML頁面上正確顯示用戶輸入的數據,您只需確保通過String#replace或類似的方式將任何特殊的HTML字符正確編碼爲實體。好消息是,很少有你需要編碼(用於此目的):

str = str.replace("&", "&amp;").replace("<", "&lt;"); 

您也可以替換>如果你喜歡,但沒有必要。

這不僅僅是因爲XSS,而且也是爲了讓角色正確顯示。您可能還想要確保將常用拉丁集之外的字符轉換爲適當的實體,以防止字符集問題(UTF-8與Windows-1252等)的出現。

+0

你也需要''',否則屬性中的內容將不安全。 – Kornel 2010-12-11 23:40:13

+0

@porneL:只有當輸出的問題是作爲屬性值輸出時,並且只有當你使用雙引號才能引用屬性(HTML允許使用單引號或雙引號引用屬性)。 – 2010-12-11 23:46:08