基于XSS和CSRF的Web攻击防御系统及其方法与流程

文档序号:12493299阅读:305来源:国知局

本发明涉及网络安全领域,尤其涉及一种基于XSS和CSRF的Web攻击防御系统及其方法,具有精确度高和误判率低的特点。



背景技术:

互联网行业的飞速发展,网络与信息安全的重要性日趋增强,大至军事、国防、政府、银行等关键行业,小至一般的企业乃至个人,都面临着网络攻击,蠕虫泛滥,隐私泄漏等风险。随着企业和政府越来越多的系统引用WEB服务,黑客针对WEB业务的攻击,亦迅猛增长。一方面,WEB技术具有便捷性,交互性以及通用性,因此被越来越多的行业采用;另一方面,针对WEB网络攻击又呈现手段多样化、技术平民化、周期缩短化的态势,严重阻碍了该项技术的发展。在所有的WEB攻击中,CSS和CSRF的技术攻击最为严重,指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的恶意代码,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行;利用这两种攻击,攻击者可以进行session挟持、数据窃取、身份冒充、钓鱼等攻击行为,甚至利用漏洞编写蠕虫病毒来感染大量访问机器。因此,亟需针对这两种攻击的防范措施出台。本发明以此为目标,对XSS和CSRF的攻击和防范进行深入研究,提出Web攻击防御系统及其方法。



技术实现要素:

跨站脚本攻击是当前web应用程序安全面临的主要威胁之一,XSS和CSRF就是这类攻击,它们对站点和用户都有巨大的危害,但是由于安全产品特殊应用需求,以及各个组织的工具自身的技术与安全防护问题,针对XSS和CSRF攻击缺乏比较系统和详细的文献资料,本发明希望深入研究这类攻击,提供一种基于XSS和CSRF的Web攻击防御系统及其方法,为网络安全人员提供参考。

实现本发明目的技术方案是:

本发明主要针对XSS和CSRF这两种脚本注入攻击提出防御策略,通过过滤模块,白名单模块和令牌拦截模块三种方式层层过滤用户数据,实现两种攻击的高精度识别,低误报率的拦截响应,为维护网络安全奠定了理论基础。

一、基于XSS和CSRF的Web攻击防御系统(简称系统)

本系统包括用户和Web服务器;

设置有攻击防御服务器,攻击防御服务器包括过滤模块、白名单模块和令牌拦截模块;

其交互关系是:

用户、过滤模块、令牌拦截模块和Web服务器依次交互;

白名单模块模块分别与过滤模块和令牌拦截模块交互。

二、基于XSS和CSRF的Web攻击防御方法(简称方法)

本方法的研究思路是在研究跨站脚本攻击的应用基础之上,尤其是对XSS和CSRF这种危害较大的攻击进行详细研究,采用Servlet技术静态过滤用户输入,白名单模块净化重组HTML数据,令牌动态拦截非法HTTP数据,实现XSS和CSRF这两种攻击的防御功能。

本方法包括下列步骤:

①过滤模块采用验证用户输入合法性,特殊字符处理,cookie防盗,以及递归净化敏感词汇四种方式过滤用户输入;

②白名单模块针对HTML脚本注入,使用HTML解析库遍历所有的节点,获取其中数据的原有标签属性,通过白名单模块中的标签重新构建HTML元素树,从根本上防范HTML脚本注入攻击;

③令牌拦截模块通过Token验证功能对不符合要求的HTTP请求进行拦截。

本发明具有下列优点和积极效果:

①精确度高:本系统采用过滤模块,白名单模块,令牌拦截模块三种方式对XSS和CSRF跨站攻击方式进行识别防御,三种技术相铺相成,对跨站脚本攻击的识别精确度高;

②误判率低:跨站脚本攻击的核心是攻击者冒用用户的身份,对Web发起请求,过滤模块静态过滤数据,令牌拦截模块动态插入Token ,动静结合大大降低了识别的误判率;

③可扩展性:针对白名单模块,在不断积累和升级的过程中,会有丰富各异的HTML标签属性,确认安全后,都可以添加到白名单模块,白名单模块的大小直接影响防御安全指数。

附图说明

图1是本系统的网络拓扑图;

其中:

100—用户;

200—攻击防御服务器,

210—过滤模块,220—白名单模块,230—令牌拦截模块;

300—Web服务器。

英译汉

1、XSS:Cross Site Scripting,跨站脚本攻击;

2、CSRF:Cross Site Request Forgery,跨站请求伪造;

3、JS:JavaScript,是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型;

4、HTML:超文本标记语言,标准通用标记语言下的一个应用。

具体实施方式

下面结合附图和实施例详细说明:

一、系统

1、总体

如图1,本系统包括用户100和Web服务器300;

设置有攻击防御服务器200,攻击防御服务器200包括过滤模块210、白名单模块220和令牌拦截模块230;

其交互关系是:

用户100、过滤模块210、令牌拦截模块230和Web服务器300依次交互;

白名单模块模块220分别与过滤模块210和令牌拦截模块230交互。

2、功能块

1)用户100

用户100是移动终端,包括手机和笔记本。

2)攻击防御服务器200

其内嵌有过滤模块210、白名单模块模块220和令牌拦截模块230。

(1)过滤模块210

过滤模块210是一种采用Servlet技术,实现HTTP请求和响应过滤的方法。

Servlet是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改。Servlet过滤模块本身并不生成请求和响应对象,它只提供过滤作用。Servlet过滤模块负责过滤的Web组件可以是Servlet,JSP或HTML文件。

过滤模块210通过验证用户输入合法性、特殊字符处理、cookie防盗以及递归净化敏感词汇四种方式过滤用户输入,以起到对跨站脚本攻击的有效防范;

过滤后的数据如果是HTML格式,则发送给白名单模块模块220;否则则发送给令牌拦截模块230。

②白名单模块模块220

白名单模块模块220是一种重新整理HTML标签及属性的方法;

针对HTML脚本注入,使用HTML解析库遍历所有的节点,获取其中数据的原有标签属性,通过白名单模块模块220中的标签重新构建HTML元素树,从根本上防范HTML脚本注入攻击;

白名单模块模块220处理后的数据发送给令牌拦截模块230。

③令牌拦截模块230

令牌拦截模块230是一种插入令牌和拦截HTTP请求的方法;

通过过滤模块210或者白名单模块模块220处理后的数据,令牌拦截模块230在HTTP的请求session加入Token这个随机值,并加入验证机制,如果HTTP请求中没有该Token,或者该Token不正确,则令牌拦截模块拒绝该HTTP请求,从而防御CSRF攻击;成功通过令牌拦截模块230的数据则直接进入Web服务器300。

3)Web服务器300

Web服务器300一般指网站服务器,是指驻留于因特网上某种类型计算机的程序。

3、本系统的工作机理:

当用户100访问Web服务器300时,数据包首先流经过滤模块210,它采用Servlet函数库拦截HTTP请求包HttpServletRequest,通过对用户的输入进行用户数据合法性验证,特殊字符处理,cookie防盗,递归净化敏感词汇这四种技术手段,实现数据过滤,抵御80%以上的跨站脚本攻击。过滤后的数据如果是HTML语句则通过白名单模块模块220处理,如果属性标签于白名单模块模块220中存在,则不做处理,直接发送给令牌拦截模块230;否则HTML语句将通过白名单模块的重新整理成新的语句再发送给令牌拦截模块230,它对响应页面脚本标签插入,并转给用户浏览器,当页面到达浏览器后,令牌拦截模块230进行Token插入操作,用户提交表单时的页面信息将会与Token值保持一致,如果Token值不存在,或者页面信息与Token不一致,令牌拦截模块230将拒绝该访问的请求,从而实现防御跨站脚本攻击的功能。

二、方法

1、步骤①:

a、用户数据合法性验证,在表单端对用户输入的文本长度,数据类型,格式进行严格限制,例如输入手机号码的文本框只允许11位纯数字,邮箱名文本框邮箱的格式要正确;

b、特殊字符处理,XSS的核心都是利用了脚本注入,不信赖用户输入,对特殊字符如”<”,”>”,”;”,”’”转义,就可以从根本上防止这一问题;

c、cookie防盗,为cookie加上HttpOnly标记,被标记上的cookie是不允许任何脚本读取或修改的,这样即使Web应用产生了XSS漏洞,cookie信息也能得到较好的保护,达到减轻损失的目的;

d、递归净化敏感词汇,在变量中构造脚本代码,输入中带入了<scr<script>ipt></scr<script>ipt>,只有通过递归查找script才能发现此类攻击。

2、步骤②:

a、针对HTML语句输入,采用HTML解析库遍历节点;

b、标签在白名单模块中的语句,不做任何处理;

c、标签不在白名单模块中的语句,通过白名单模块重新构建HTML语句。

3、步骤③:

a、用户登录Web服务器,经过令牌拦截模块获取的HTTP请求数据;

b、对响应页面脚本标签插入,并转给用户浏览器,当页面到达浏览器后,令牌拦截模块采用跨浏览器的JavaScript库jQuery进行Token插入操作;

c、用户提交表单时的页面信息将会与Token值保持一致,并且在提交之前,令牌拦截模块会对HTTP请求进行拦截查看,如果Token值不存在,或者页面信息与Token不一致,拦截器将拒绝该访问的请求。

4、过滤模块210的工作流程包括下列步骤:

过滤模块210负责过滤的Web组件可以是Servlet,JSP或HTML文件。Servlet的原理:在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest;根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。在HttpServletResponse 到达客户端之前,拦截HttpServletResponse。根据需要检查HttpServletResponse,可以修改HttpServletResponse头和数据;

a、用户数据合法性验证,在表单端对用户输入的文本长度,数据类型,格式进行严格限制,例如输入手机号码的文本框只允许11位纯数字,邮箱名文本框邮箱的格式要正确;

b、特殊字符处理,对特殊字符如”<”,”>”,”;”,”’”转义,这一个层面做好,至少可以堵住超过一半的XSS 攻击。XSS的核心都是利用了脚本注入,因此我们解决办法其实很简单,不信赖用户输入,对特殊字符如”<”,”>”转义,就可以从根本上防止这一问题;

c、cookie防盗,为cookie加上HttpOnly标记。HTTP是一个无状态维持的协议,但有些场景下我们需要维护状态信息,cookie和session则是用来解决状态维护问题,当用户首次登入时,服务器为该用户创建一个 session ID,同时向游览器传送一个 cookie,cookie保存会话连接中用到的数据,session ID作为会话标识,游览器后续的请求均基于该session ID,攻击者获得session得到用户的执行权限。窃取cookie一般都会依赖JavaScript读取 cookie信息,而HttpOnly标记则会告诉浏览器,被标记上的cookie是不允许任何脚本读取或修改的,这样即使Web应用产生了XSS漏洞,cookie信息也能得到较好的保护,达到减轻损失的目的;

d、递归净化敏感词汇,在变量中构造脚本代码,输入中带入了<scr<script>ipt></scr<script>ipt>,只有通过递归查找script才能发现此类攻击;

5、白名单模块模块220的工作流程包括下列步骤:

白名单模块模块220控制允许的HTML标签及各标签的属性,并通过自定义的函数对任意标签及其属性进行处理。一般提供给用户使用的富文本编辑器,都是一些比较常用的功能,比如视频,图片(表情),文字(加粗,加斜杠,字号,颜色,分割符号,字体),存储常用功能的标签于白名单模块中。在处理用户输入的HTML语句时,使用HTML解析库遍历每个节点,获取其中的标签属性,如果属性在白名单模块中存在,则标签内容不变,不做处理;如果标签属性不在白名单模块中,则获取其中数据原有的标签属性,重新构建 HTML 元素树,在构建过程中,所有的标签属性只从白名单模块中提取,标签内容保持不变;

a、针对HTML语句输入,采用HTML解析库遍历节点;

b、标签在白名单模块中的语句,不做任何处理;

c、标签不在白名单模块中的语句,通过白名单模块重新构建HTML语句。

6、令牌拦截模块230的工作流程包括下列步骤:

CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,并且该信息不存在于cookie之中。鉴于此,该系统中在HTTP的请求session加入令牌Token这个随机值,服务器端设置拦截器进行验证,如果HTTP请求中没有该值,或者该值不正确,则服务器拒绝该请求,从而防御CSRF攻击;令牌拦截模块的设计原理是通过对于客户端与服务器的请求进行拦截,并对信息作出相应的响应处理;

a、用户登录Web服务器,经过令牌拦截模块获取的HTTP请求数据;

b、对响应页面脚本标签插入,并转给用户浏览器,当页面到达浏览器后,令牌拦截模块采用跨浏览器的JavaScript库jQuery进行Token插入操作;

c、用户提交表单时的页面信息将会与Token值保持一致,并且在提交之前,令牌拦截模块会对HTTP请求进行拦截查看,如果Token值不存在,或者页面信息与Token不一致,拦截器将拒绝该访问的请求。

三、应用

跨站脚本攻击是目前最流行的网络攻击方式之一,同时,它像钓鱼攻击一样针对普通用户,而且危害性更大。该专利提出的防御系统是以代理的形式为Web应用提供服务,这对防御系统来说是一个很大的改进。该系统可以应用于政府、运营商、金融、能源等企事业单位的官方网站,协助用户降低XSS和CSRF的Web应用安全风险,Web服务器和系统对接后,会实时将告警日志信息上传用于维护和更新白名单模块,总结出Web攻击特征和防护规则优化方案,在取得用户授权的情况下,协助用户快速调整设备的安全防护策略,精确拦截Web攻击。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1