2010-11-05 67 views
2

我想保护我的网站表单xss,并且我想确保我的所有数据都是正确和一致的,所以我不想允许将任何脚本添加到我的数据库,那是因为我的数据可能会被其他Web服务使用,所以我想确保我的数据是正确的,不会给其他人带来任何问题。保护jsp页面再次xss

我只想在数据的输入中进行验证,而不是在输出中进行验证,因此我只进行一次验证,而且我也确信在我的数据库中不存在任何脚本。

编辑:请检查我添加的最后一条评论。

+0

地块位置:http://stackoverflow.com/questions/tagged/jsp+xss – BalusC 2010-11-05 21:25:30

+0

我编辑我的问题,请检查它。 – palAlaa 2010-11-24 01:01:38

+1

然后这是你想要的那个:http://stackoverflow.com/questions/3587199/how-to-purify-html-code-to-prevent-xss-attacks-in-java-or-jsp它在列表中的重复。 – BalusC 2010-11-24 02:35:19

回答

5

使用一些过滤器来清理HTTP请求数据。

您可以去jsoup,这是非常方便的:

String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"; 
String safe = Jsoup.clean(unsafe, Whitelist.basic()); 
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p> 

参考:重复的http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer

0

总之,可以编写滤波器,其确实的用户输入的适当的转义(地图相关URL映射)。有可能是现成的插件来做到这一点,但我不知道。
您可以参考本主题XSS prevention in JSP/Servlet web application

+0

使用$ {fn:escapeXml(param.foo)}作为@BlusC说,允许'<','>',',“被插入到分贝,我以前试过,并且它不工作! – palAlaa 2010-11-05 18:38:04

+0

有commons lang API你可以使用编码和解码:http://commons.apache.org/lang/index.html – ch4nd4n 2010-11-05 19:08:07

+3

@Alaa:它阻止用户输入的HTML在视图中被逐字解释,HTML不会在数据库中解释这完全没有伤害。数据库只能理解SQL(您希望防止SQL注入攻击,但这是一个不同的主题)。 XSS转义需要在**输出**上完成,而不是在**输入**上完成。 'c:out'和'fn:escapeXml()'完全一样。 @ ck-:我看不出过滤器在这方面的用处。 – BalusC 2010-11-05 21:23:26