最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 网络安全 > 网络管理 >
你理解防止xss攻击的方法吗
网络发表于 2021-04-07 14:52 次浏览

最近,有个项目突然接到总部的安全漏洞报告,查看后知道是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攻击的方法有所帮助。

标签:防止xss攻击
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2021-04-07 14:53:26 关键词:ddos攻击防御,如何防御ddos攻击,ddos攻击防御设置
摘要:本文为大家分享管理员必读的防御DDOS攻击终极指南,包括了为什么要DDOS攻击,什么是DDOS攻击以及怎么防御DDOS攻击,希望这篇文章能引起大家对DDOS攻击的研究兴趣。..
2021-04-07 14:53:00 关键词:CSRF攻击,ASP.NET
摘要:这篇文章主要介绍了防止CSRF攻击ASP.NET 应用的方法,如何做到保护ASP.NET应用免受CSRF攻击,感兴趣的小伙伴们可以参考一下..
2021-04-07 14:52:34 关键词:DDoS,攻击,原理
摘要:这篇文章主要为大家详细剖析了DDoS攻击原理,更全面的了解DDoS攻击,做好防御DDoS攻击的准备工作,感兴趣的小伙伴们可以参考一下..
2021-04-07 14:52:26 关键词:XSS,攻击
摘要:这篇文章主要介绍了XSS跨站脚本攻击问题和原理,跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击Web网站的方法,感兴趣的小伙伴们可以参考一下..
2021-04-07 14:52:17 关键词:黑客,攻击策略
摘要:这篇文章主要介绍了黑客七大惯用攻击策略,你必须掌握!,需要的朋友可以参考下..