题目如下所示:

SpringMVC如何有效的防止XSS注入?

答案如下:

首先明确xss的解决方式是输入过滤,输出编码。SpringMVC Web程序通过控制器获取参数,在view层输出。在view层解决的话,基本的方法是html实体编码,编码特殊字符如()<>/,例如> 编成> <编成< 这样显示起来没有问题,也不会导致用户输入的js语句被插入到输出页面而被执行,即所谓的xss。

向页面输出request接收的内容时,转义"<"和">","("和")"即可。js脚本没有小括号,则无法在html中调用,没有尖括号,则无法在页面中插入<script>标签。

需要注意一点:springmvc注解@RequestParam不是通过HttpServletRequest.java的getParameter(String name)方法得到的参数值,而是通过getParameterValues得到的,所以,新增一个XSSHttpServletRequestWrapper来重写request对象的getParameter方法,过滤参数中的容易引起xss漏洞的字符,但实际并不起作用呢。