Java网站保护解决方案(尤其是XSS)

我正在开发一个Web应用程序,并面临一些安全问题.

在我的应用程序中,用户可以发送消息并查看其他消息(类似app的公告板).我正在验证用户可以发送到我的应用的所有表单字段.

有一些非常简单的字段,比如“昵称”,可以是6-10个字母字符,或者是消息发送时间,它是作为字符串发送给用户的,然后(当用户要求消息时,“更年轻” “或”比日期更早“我用SimpleDateFormat解析它(我在java中开发,但我的问题与java无关).

最大的问题是消息字段.我不能将它仅限于字母字符(大写或小写),因为我必须处理一些经常使用的字符,如“,”,/,{,}等…(如果系统没有用户不满意不允许他们使用这些东西

根据这个http://ha.ckers.org/xss.html,人们可以通过很多方式“破解”我的网站.但我想知道,有什么方法可以阻止这种情况吗?不是全部,因为没有100%的保护,但我想要一个可以保护我的网站的解决方案.

我在服务器端使用servlet,在客户端使用jQuery.我的应用程序是“完整的”AJAX,因此用户打开1个JSP,然后使用JSON通过jQuery下载和呈现所有数据. (是的,我知道这不是“用户 – 没有javascript”友好,但它是2010年,对吧?:-))
我知道前端验证是不够的.我想使用3层验证:
– 1.前端,javascript验证数据,然后发送到服务器
– 2.服务器端,相同的验证,如果有什么,那应该不存在(因为客户端javascript),我BAN用户
– 3.如果有任何我以前无法捕获的内容,渲染过程会正确处理和渲染

有没有“开箱即用”的解决方案,特别是对于Java?或者我可以使用的其他解决方案?

最佳答案 为了最大限度地减少XSS攻击,重要的是在将任何字段数据放回页面之前对其进行编码.喜欢改变>到>等等.这将永远不允许任何恶意代码在添加到页面时执行.

我认为你通过白色列出你期望的不同领域的数据,做了很多正确的事情.除此之外,对于可能允许编码有问题的其他字符的字段,将为您解决问题.

此外,由于您使用的是Ajax,它会为您提供一些保护,因为人们无法覆盖URL参数等中的值.

点赞