一种基于跳表的跨站脚本攻击防御方法

文档序号:8445807阅读:318来源:国知局
一种基于跳表的跨站脚本攻击防御方法
【技术领域】
[0001] 本发明属于Web攻击检测与防御技术领域。
【背景技术】
[0002] 针对跨站脚本攻击,目前大部分Web站点一般采取的防范策略包括客户端过滤、 服务端过滤及Web攻击检测防火墙部署等,大致分为:客户端防御、服务端防御、客户端与 服务端协作防御。
[0003] 客户端防御:(1)过滤策略:Web应用程序的一般输入数据验证过滤功能通常由客 户端脚本(Javascript)处理,如邮件格式、文本特殊字符及长度限制、密码强健程度等,基 本能够完成客户端的13种验证,包括取值为空、必须为整数/双精度数/中文字符/普通英 文字符、最小/最大长度、Email格式、日期格式、正则表达式、整数范围、与某域值相同等, 所有这些简单的验证都可以在客户端完成。(2)安全策略:网络应用程序为了降低XSS攻击 带来的风险,服务端通常采用各种附加检测策略如:Cookie加密防盗、HTTP头Refer引用审 核、流程校验码、CAPTCHA(验证码)系统、MG图片真伪审核等。(3)编码策略:程序员开发 网络应用时,一般在服务端程序中对不可信任数据输入输出相应编码解码处理,如HTML实 体编码,因为HTML中存在扮演特殊意义重要字符(如:&、〈、>、"、'、/),被浏览器引擎作为 特殊指令解析而不是纯文本显示,所以使用HTML实体解码可以避免切换到任何执行内容, 如脚本、样式或者事件处理程序。
[0004] 基于纯客户端的防御方式无法根本避免XSS攻击,研宄表明修改浏览器脚本引擎 或禁止危险特性方法可以有效防范恶意脚本。
[0005] 服务端防御:(1)过滤策略:针对各种插件能轻松绕过客户端脚本验证过滤第一 道防墙,程序员一般在服务端实行数据校验作为第二道防墙,对用户数据进行白名单或黑 名单检测,确保不包含恶意脚本内容,白名单策略包含各种特殊字符的过滤,如水平制表 符、回车键、特殊标签属性、事件关键字等,其中涉及特殊字符的各种编码方案,因此能防 御大部分恶意脚本衍生版本的攻击。(2)分离策略:基于数据库驱动动态Web应用程序作 为允许数据与代码输入的系统,必须内置良好定义机制区分可信代码和不可信数据,针对 非可信数据内容隔离方法,一般都是利用HTML定义标签src属性来独立分离出来,其中 〈Iframe〉标签是HTML特性中扮演重要角色,通常用来嵌入第三方内容,该元素的src属 性目的是定位和获得包含在当前页面中的外部文档页面,因为嵌入的内容不太可能伪造 Iframe结束标签来规避有严格限制的Iframe环境,所以该方法能很好保持内外部文档的 结构一致性。
[0006] 浏览器策略:目前大部分浏览器具有Internet区域安全级别设置功能,由于用户 缺乏对网络应用程序的了解,不能针对不同网络应用需求调整安全配置级别,所有不能有 效防御恶意脚本攻击,用户可以配置禁止JavaScript脚本运行,根本上杜绝XSS攻击的发 生,但是由于大部分站点应用程序的丰富多彩页面离不开客户端脚本,因此禁止脚本运行 一定程度上降低了网络应用程序的特性和用户交互性。
[0007] 客户端与服务端协作防御:具备较高安全性能的Web应用往往采取客户端与服务 端协作防御方法,一方面采取客户端脚本初步隔离不符合网络应用定义规则的数据,另一 方面,提高服务脚本对输入输出编码,同时采取入侵检测设备作为服务端防火墙拦截各种 攻击。
[0008] 综上,现有技术主要是通过过滤特殊字符、编码解码以及一些安全和分离策略来 实现针对跨站脚本攻击的防御。但是各种方法都有其弊端:过滤特殊字符的检测率低,误 报率很高,导致我们很难精确防御跨站脚本狗估计。而安全和分离策略虽然在误报率和检 测率上都要优于过滤特殊字符,但是对系统的要求却很高,需要消耗很大的系统资源作为 代价,降低用户的体验舒适度。而像当前的客户端与服务器端协作防御,则具有很大的复杂 性,实现起来过于复杂,而且也兼有动态检测技术的缺点,因此目前来讲实用性比较低。

【发明内容】

[0009] 有鉴于此,本发明提供了一种基于跳表的跨站脚本攻击防御方法,具有较高的检 测率和很低的误报率,同时系统资源的消耗少,大大提高了程序漏洞的检测效率。
[0010] 为了达到上述目的,本发明的技术方案包括如下步骤:
[0011] 步骤1、针对跨站脚本攻击XSS样本,建立基于跳表的攻击向量特征库,分为如下 步骤:
[0012] St印101 :读取XSS中的攻击代码code字段值。
[0013]St印102:对XSS中的攻击代码进行规范化处理:首先进行唯一资源定位器URL解 码,并过滤浏览器解释空白字符以及换行制表回车符,然后进行超文本标记语言HTML实体 解码以及浏览器特殊IEspecial解码。
[0014]St印103:将规范化处理后的攻击代码进行16位消息摘要算法第五版MD5编码及 整数转换,获得样本长整型数据。
[0015]St印104:将St印103中的每个样本长整型数据均创建为跳表节点,采用所有的跳 表节点构建跳表:
[0016] 其中跳表节点的数据类型为自定义数据类型,包含关键词key字段、数据值value 字段以及前向指针数组forward字段;其中key字段存储节点编号,value字段存储当前样 本长整型数据,forward字段存储节点指向。
[0017] 跳表的数据类型为自定义数据类型,包含层数level字段以及节点指针字段;其 中节点指针字段存储指向节点的指针,level字段存储节点在跳表中的层数。
[0018] 节点在跳表中层数满足参数为P= 1/2的集合分布。
[0019] 所建立的跳表以及跳表节点即组成基于跳表的攻击向量特征库。
[0020] 步骤2、结合超文本传输协议HTTP流量包分析,拦截客户端通过发送/获取POST/ GET方式提交的数据信息,并根据数据信息中请求标头键值对提取其中的脚本向量参数集 合S= (S1,S2,…,Sm},m为脚本个数,对于i= 1,2,…,m,脚本参数Si中存储有脚本关键 字以及其内容数据。
[0021] 步骤3、对每一脚本参数Si,采用Stepl02中的方式进行规范化处理,然后通过确 定性有限状态机DFA描述方式生成所有可能指定阈值为L长度的子序列集合A= (A1,A2,??? ,ArJ〇
[0022] 步骤4、针对Si对应的每个子序列~进行16位MD5编码和整数转换,获得~的长 整型Bj,从而生成集合B= (B1,B2,…,Bj;j= 1,2,…,n。
[0023] 步骤5、遍历集合B,将Bj与基于跳表的攻击向量特征库中跳表节点的value字段 进行匹配,若存在跳表节点的value字段与Bj相同,则匹配成功,Sm中存在攻击特征,继而 对脚本参数Sm进行污点标记,标记为S'm,若不存在跳表节点的value字段与Bj的长整型相 同,则匹配失败,Sni中无攻击特征。
[0024] 进一步地,跳表节点中的数据类型中还包含匹配次数计数count字段,在步骤5中 将1_与基于跳表的攻击向量特征库中跳表节点的value字段进行匹配时,每个节点均在 count字段中记载自身匹配成功的次数,依据每个节点的count字段定时对跳表进行如下 更新:将节点按照Count字段由大到小进行排序,在跳表中,顶层~底层中节点的个数分别 为1:~Ip,P为总层数,将排序在前I1的节点,修改其在跳表中的level字段为顶层,同时 依据跳表结构修改forward字段。依此类推,直至将排序在前Ip的节点,修改其在跳表中 的level字段为底层,同时依据跳表结构修改forward字段。
[0025] 有益效果:
[0026] 本发明的目的是将静态检测技术融入到动态检测技术中,使二者有效的结合起 来,这样一来,系统便同时具有了静态
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1