防止xss攻击的有效方法

所属分类: 网络安全 / 黑客教程 阅读数: 212
收藏 0 赞 0 分享

最近,有个项目突然接到总部的安全漏洞报告,查看后知道是XSS攻击。

问题描述:

在页面上有个隐藏域:

XML/HTML Code复制内容到剪贴板
  1. <input type = "hidden" id = "action" value = "${action}"/>    

当前页面提交到Controller时,未对action属性做任何处理,直接又回传到页面上

如果此时action被用户恶意修改为:***"<script>alert(1);</script>"***

此时当页面刷新时将执行alert(1),虽然错误不严重,但是任何安全隐患都应受到重视。

解决思路:

该问题是由于对用户输入数据(隐藏域)未做任何处理,导致非法数据被执行,那么解决该问题的核心思路就是对用户数据做严格处理,对任何页面传递的数据都不应过分信任,处理方法如下:

1.在页面上对action参数做转义处理,${action?html}(前端技术采用freemarker),但是此种方法只能对单个属性有效,如果此时项目处于维护期且有大量此种问题,修复的难度较大且不便于统一维护

2.在服务端对用户数据做转义处理,此时需要创建一个filter,对request进行二次封装,核心代码如下:

Java Code复制内容到剪贴板
  1. import javax.servlet.http.HttpServletRequest;   
  2. import javax.servlet.http.HttpServletRequestWrapper;   
  3.     
  4. import org.apache.commons.lang3.StringEscapeUtils;   
  5.     
  6. public class XssRequestWrapper extends HttpServletRequestWrapper {   
  7.     
  8.     public XssRequestWrapper(HttpServletRequest request) {   
  9.         super(request);   
  10.     }   
  11.     
  12.     public String getParameter(String name) {   
  13.         String value = super.getParameter(name);   
  14.         if (value == null) {   
  15.             return null;   
  16.         }   
  17.         return StringEscapeUtils.escapeHtml4(value);   
  18.     }   
  19.     
  20.     public String[] getParameterValues(String name) {   
  21.         String[] values = super.getParameterValues(name);   
  22.         if (values == null) {   
  23.             return null;   
  24.         }   
  25.         String[] newValues = new String[values.length];   
  26.         for (int i = 0; i < values.length; i++) {   
  27.             newValues[i] = StringEscapeUtils.escapeHtml4(values[i]);   
  28.         }   
  29.         return newValues;   
  30.     }   
  31. }   

XssRequestWrapper是对request进行的二次封装,最核心的作用是对request中的参数进行转义处理(需要用到commons-lang3.jar)

定义filter,核心的代码如下:

Java Code复制内容到剪贴板
  1. @Override  
  2. public void doFilter(ServletRequest request,   
  3.                      ServletResponse response,   
  4.                      FilterChain chain) throws IOException, ServletException {   
  5.     HttpServletRequest req = (HttpServletRequest) request;   
  6.     chain.doFilter(new <span style="color: #000000;">XssRequestWrapper</span>(req), response);   
  7. }  

在web.xml中配置指定请求进行过滤,可以有效防止xss攻击,希望本文所述对大家熟练掌握防止xss攻击的方法有所帮助。

更多精彩内容其他人还在看

为何黑客要挟制路由器DNS 用户该怎样实时发觉和防备方法

起首说说挟制路由器是什么意思,路由器挟制平日指的是,开启了无线网络功效的无线路由器,攻击者经由过程破解无线暗码衔接上无线网后,再登录路由治理界面来节制全部无线网,被挟制以后能够随意率性改动后盾设置。下面我们一起看看怎么防备黑客入侵
收藏 0 赞 0 分享

大势至共享文件监控软件、共享文件权限管理软件主控端与客户端的连接设置方法详解

这篇文章主要介绍了大势至共享文件监控软件、共享文件权限管理软件主控端与客户端的连接设置方法详解,,小编觉得还是挺不错的,具有一定借鉴价值,下面就来和小编一起看看吧
收藏 0 赞 0 分享

server2008共享设置、服务器共享文件设置、服务器设置共享文件夹的方法详细介绍

这篇文章主要介绍了server2008共享设置、服务器共享文件设置、服务器设置共享文件夹的方法详细介绍,保护服务器共享文件设置访问权限,让每个部门只访问自己的共享文件等,下面随小编一起来看看吧
收藏 0 赞 0 分享

大势至网络终端准入控制系统、局域网网络准入控制方案最新版使用说明!

这篇文章主要介绍了大势至网络终端准入控制系统、局域网网络准入控制方案最新版使用说明,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以看下。
收藏 0 赞 0 分享

大势至局域网接入认证软件、禁止电脑接入局域网软件V9.0正式发布

这篇文章主要介绍了大势至局域网接入认证软件、禁止电脑接入局域网软件V9.0正式发布,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以看下。
收藏 0 赞 0 分享

大势至电脑文件安全管理软件、计算机文件防泄密软件V12版本发布

这篇文章主要介绍了大势至电脑文件安全管理软件、计算机文件防泄密软件V12版本发布,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

大势至共享文件权限管理软件、公司内部文件共享、企业共享文件解决方案

这篇文章主要介绍了大势至共享文件权限管理软件、公司内部文件共享、企业共享文件解决方案的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

反垃圾邮件技术之密径追踪(图)

中国的网民数量已突破1 亿,每年电子邮件发送量达500 亿封,但是这样的数据却并不能令我们惊喜,因为在这500 亿封电子邮件中,有将近60%也就是有300 亿封是垃圾邮件。垃圾邮件已经成为一个综合性的社会问题,要想从根本上杜绝垃圾邮件的泛滥,必须采取全民总动员的方式
收藏 0 赞 0 分享

详细介绍如何捕获网络数据包

前 言 经常看到论坛有人问起关于数据包的截获、分析等问题,幸好本人也对此略有所知,也写过很多的sniffer,所以就想写一系列的文章来详细深入的探讨关于数据包的知识。 我希望通过这一系列的文章,能使得关于数据包的知识得以普及,所以这系列的每一篇文
收藏 0 赞 0 分享

黑客的脚本漏洞工具分析(图)

上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码破解工具进行破解的。然后找到后台用所得的用户名和密码进行登录即可。对于黑客软件,其实并不是我们想象的那么复杂,只是根据掌握的漏洞信息提交相应该的
收藏 0 赞 0 分享
查看更多