防止xss攻击的有效方法

所属分类: 网络安全 / 黑客教程 阅读数: 106
收藏 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攻击的方法有所帮助。

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

winXP/win7/win10系统关闭445端口的方法(电脑勒索病毒预防)

这篇文章主要介绍了电脑勒索病毒如何预防winXP/win7/win10系统关闭445端口的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

“永恒之蓝”(Wannacry)蠕虫全球肆虐 安装补丁的方法

5月12日晚,一款名为Wannacry的蠕虫勒索软件袭击全球网络,这被认为是迄今为止最巨大的勒索交费活动,影响到近百个国家上千家企业及公共组织。该软件被认为是一种蠕虫变种(也被称为“wannacryptor”或“wcry”)
收藏 0 赞 0 分享

WannaCry病毒劫持文件怎么恢复?阿里云云盾勒索病毒文件恢复的使用教程

名为WannaCry的勒索病毒让全球数十万Windows计算机中招,重要文件被实施加密,并索要赎金解锁,现在阿里云安全团队开放勒索病毒“一键解密和修复”工具,恢复已被WannaCry勒索病毒加密的文件,下面就来看看具体的操作方法吧
收藏 0 赞 0 分享

极虎病毒是什么 极虎病毒有什么危害

极虎病毒是金山毒霸云安全实验室国内首家发现的一款集合了磁碟机、AV终结者、中华吸血鬼、猫癣下载器为一体的混合病毒,由于该病毒可利用IE极光ODAY漏洞进行传播,又是虎年的第一个重大恶性病毒,因此得名“极虎”
收藏 0 赞 0 分享

全国各地敲响网络安全警钟 河南企业如何应对?

近日,很多人的朋友圈都被“重庆网安总队查处某公司违反《网络安全法》第一案”刷屏了,不知道接下来又有哪家企业“中招”?紧接着,即将召开的十九大也会进一步加大对网络信息安全的监管力度,这些都给河南省乃至全国企事业单位的网络信息安全工作敲响了警钟
收藏 0 赞 0 分享

网络安全基础问答25例,白帽黑客和安全研究员必备!

这篇文章主要为大家介绍了网络安全基础,入门必看,对于想学习网络安全的朋友必须要了解的东西
收藏 0 赞 0 分享

有什么有效的方法能禁止员工将公司电脑中的文件拷贝出去、禁止员工复制公司电脑文件

这篇文章主要介绍了有什么有效的方法能禁止员工将公司电脑中的文件拷贝出去、禁止员工复制公司电脑文件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

如何禁止外来电脑访问共享文件、如何禁止手机访问共享文件

为了日常工作方便,设置共享文件服务器通常是大多数企业的管理方式,共享文件服务器上的共享文件仅用于局域网内的用户使用,本文给大家介绍如何禁止外来电脑访问共享文件、如何禁止手机访问共享文件,需要的朋友参考下吧
收藏 0 赞 0 分享

安装大势至电脑文件防泄密系统客户端提示“用户/密码错误”怎么解决

这篇文章主要介绍了安装大势至电脑文件防泄密系统客户端提示“用户/密码错误”怎么解决的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

大势至电脑文件防泄密系统的比较优势,专业的电脑数据防泄漏软件

这篇文章主要介绍了大势至电脑文件防泄密系统的比较优势,专业的电脑数据防泄漏软件的相关资料,大势至电脑文件防泄密系统主要从三个方面进行控制,即存储设备控制、上网行为控制、操作系统控制,从而构建立体化、全方位信息安全防护平台
收藏 0 赞 0 分享
查看更多