2010-02-23 49 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