在我的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