CN101901221A - 一种跨站脚本攻击的检测方法和装置 - Google Patents
一种跨站脚本攻击的检测方法和装置 Download PDFInfo
- Publication number
- CN101901221A CN101901221A CN2009100850344A CN200910085034A CN101901221A CN 101901221 A CN101901221 A CN 101901221A CN 2009100850344 A CN2009100850344 A CN 2009100850344A CN 200910085034 A CN200910085034 A CN 200910085034A CN 101901221 A CN101901221 A CN 101901221A
- Authority
- CN
- China
- Prior art keywords
- label
- javascript script
- javascript
- script
- probability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提出一种跨站脚本攻击的检测装置,包括指数计算单元、提取单元、编码还原单元、语义还原单元、匹配程度计算单元和判断单元,各单元彼此协作,采用综合HTML标签分析分析的方法(包括标签的EJSRF分析、JavaScript编码变形分析、JavaScript语义变性分析、XSS攻击特征模式匹配这4种方法)对Web页面中夹带的恶意跨站脚本进行识别、提取。这种以HTML标签分析为核心的跨站脚本识别与提取技术能够高效准确地区分Web页面中正常的JavaScript与恶意的跨站脚本,使得网络安全检测设备和网络终端能够精确识别、过滤含有恶意跨站脚本的Web页面,同时又能够保证合法的(没有夹杂恶意跨站脚本)的Web页面正常通过。
Description
技术领域
本发明涉及网络安全技术区域,具体涉及一种跨站脚本攻击的检测方法和装置。
背景技术
网络中的各种终端浏览器如IE、FireFox、MyIE等,它们负责在用户输入URL或者点击某个链接之后向Web服务器发送HTTP的请求(常见的如GET、POST),Web服务器在接收到HTTP请求之后,会执行相应的操作,典型的是返回所请求的页面,在这些返回的页面中,常常会夹杂着恶意的跨站脚本,这些脚本一旦返回给终端的浏览器,就会对用户的终端实施不同程度的攻击,如盗取用户账号、盗取用户硬盘上的敏感信息等,这种攻击非常常见,被称作跨站脚本攻击(Cross Site Scripting,简称为XSS)。跨站脚本攻击的实施步骤比较繁琐,与其它类型的攻击相比,跨站脚本攻击属于间接攻击(或称为被动攻击),如图1所示,攻击者往往是通过首先诱使受害者访问由攻击者事先精心构造好的一个不易辨认的有害链接,受害者在点击了该链接之后会访问攻击者安排好的恶意网站,或者受害者在点击了该链接之后,事先安排好的还有恶意脚本的网页会返回到客户的浏览器,此时网页中的恶意脚本会自动执行,从而完成对受害者的攻击。近年来随着Web应用的大量普及,更多的应用和商业活动依赖于Web系统展开,Web安全问题也越来越突出,在这些纷繁复杂的安全问题中,跨站脚本攻击一直是位居前列且急需解决的Web安全问题,目前大多数的解决办法只能在攻击者将跨站脚本注入到页面中的行为进行检测,而对大量存在的、已经被成功注入了跨站脚本的页面,在用户访问这些有害页面的过程中,却无法实施有效的检测,因为页面本身就自带大量的脚本,这些脚本与攻击者注入的跨站脚本混在一起,难于区分,因此也就很难检测。
现有的一种应用于Web Server设备上的用于防止跨站攻击的方案,是通过在Web Server端对HTTP请求进行分析和过滤,主要是对请求的页面进行网页入口点的判断和授权的验证。这种方式虽然能对由客户端发起的反射式跨站脚本攻击起到一定的检测作用,但是如果该网页没有授权认证,或者当用户访问一个网页的时候,该网页已经包含了恶意脚本,即存储式跨站脚本攻击时,该方案就不再适用,但是这种情况在跨站脚本攻击当中又占了绝大多数的比例。
发明内容
本发明要解决的技术问题是提供一种跨站脚本攻击的检测方法和装置,能够在网络安全监测设备或者网络终端上识别与提取页面中夹带的跨站攻击脚本,同时又避免了页面中自身携带的合法的脚本被误杀。
为了解决上述技术问题,本发明提出一种跨站脚本攻击的检测方法,包括:
a、对于捕获到的HTTP返回页面,找到其中的活跃标签;将所捕获的HTTP返回页面中包括该活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;提取出各活跃标签内的JavaScript脚本;所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签,所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
b、对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN;进行语义还原,得到该JavaScript脚本中使用字符串变量的次数SDN;将经过编码和语义还原的JavaScript脚本与预设的跨站脚本攻击特征进行匹配,得出该JavaScript脚本的特征匹配程度SMD;
c、将所述EJSRF、EBN、SDN和SMD加权相加,将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所捕获到的HTTP返回页面包含跨站脚本攻击。
进一步地,上述方法还可具有以下特点:
所述步骤a具体包括:
a1、存储各HTTP标签的统计信息,包括该HTML标签的出现次数N、该HTML标签作为活跃标签出现的次数M;
a2、捕获到的HTTP返回页面后,按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签;如果所有标签都已提取完,则执行步骤b;
a3、将该标签的N加1;如果该标签直接嵌套了JavaScript脚本,将该标签的M加1,记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本,然后执行步骤a4;否则返回步骤a2;
a4、将该标签的概率P的倒数,和所捕获的HTTP返回页面中位于该标签外的各层标签的概率P的倒数累加,然后求出累加所得的和的算数平均值作为该标签的EJSRF;所述标签的概率P的倒数为该标签的N除以M;当没有概率P为0的标签时,除数为该标签的NL,否则除数为该标签的NL减去概率P为0的标签的个数。
进一步地,上述方法还可具有以下特点:
所述步骤b具体包括:
b1、首先对提取出的JavaScript脚本进行逐字符的编码还原,把通过16进制或10进制编码转换的JavaScript脚本转换成编码前的脚本,得到被编码的字符数量EBN;
b2、对经过步骤b1编码还原之后的JavaScript脚本进行语义还原,代入字符串常量或字符串变量的语义以还原进行过字符串拼接的语句,得到对字符串拼接的次数SDN;
b3、将经过编码还原和语义转换后的JavaScript脚本与一预定的XSS攻击特征数据库中的XSS攻击特征进行比对,得出该JavaScript脚本的SMD。
进一步地,上述方法还可具有以下特点:
所述步骤b3中:
将所述JavaScript脚本所匹配的所有XSS攻击特征的权重相加;各XSS攻击特征的权重分别为1到10中的一个值,包括1和10。
进一步地,上述方法还可具有以下特点:
EJSRF、EBN、SDN和SMD的权重分别为0.4、0.3、0.2和0.1。
为了解决上述技术问题,本发明还提出一种跨站脚本攻击的检测装置,包括:
指数计算单元,用于将所捕获的HTTP返回页面中包括所述活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签;所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
提取单元,用于对于捕获到的HTTP返回页面,找到其中的活跃标签并通知所述指数计算单元;提取出各活跃标签内的JavaScript脚本;
编码还原单元,用于对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN;
语义还原单元,用于对编码还原后的JavaScript脚本进行语义还原,得到该JavaScript脚本中使用字符串变量的次数SDN;
匹配程度计算单元,将经过编码和语义还原的JavaScript脚本与预设的跨站脚本攻击特征进行匹配,得到该JavaScript脚本的特征匹配程度SMD;
判断单元,用于将所述EJSRF、EBN、SDN和SMD加权相加,将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所捕获到的HTTP返回页面包含跨站脚本攻击。
进一步地,上述装置还可具有以下特点:
所述提取单元具体包括:
存储模块,用于存储各HTTP标签的统计信息,包括该HTML标签的出现次数N、该HTML标签作为活跃标签出现的次数M;
活跃标签识别模块,用于按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签,将存储模块中该标签的N加1;如果该标签直接嵌套了JavaScript脚本,则将存储模块中该标签的M加1,在存储模块中记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本放入所述存储模块,并通知所述指数计算单元该标签为活跃标签;否则提取下一个标签;
所述指数计算单元计算所述算数平均值时,从所述存储模块中读取所述活跃标签M和N,以及所捕获的HTTP返回页面中位于该标签外的各层标签的M和N,将所读取的各标签的N分别除以M后进行累加作为被除数;当没有概率P为0的标签时,将所述活跃标签的NL作为除数,否则将所述活跃标签的NL减去概率P为0的标签的个数后作为除数。
进一步地,上述装置还可具有以下特点:
所述编码还原单元对JavaScript脚本进行编码还原是指将通过16进制或10进制编码转换的JavaScript脚本逐字符的转换成编码前的脚本;
所述语义还原单元对JavaScript脚本进行语义还原是指代入字符串常量或字符串变量的语义以还原进行过字符串拼接的语句;
所述匹配程度计算单元将JavaScript脚本与预设的跨站脚本攻击特征进行匹配是指将JavaScript脚本与一预定的XSS攻击特征数据库中的XSS攻击特征进行比对。
进一步地,上述装置还可具有以下特点:
所述匹配程度计算单元得到JavaScript脚本的特征匹配程度SMD是指将所述JavaScript脚本所匹配的所有XSS攻击特征的权重相加;各XSS攻击特征的权重分别为1到10中的一个值,包括1和10。
进一步地,上述装置还可具有以下特点:
判断单元将所述EJSRF、EBN、SDN和SMD加权相加时,EJSRF、EBN、SDN和SMD的权重分别为0.4、0.3、0.2和0.1。
本发明的技术方案解决了传统上无法或很难对页面中夹杂的跨站脚本进行发现、识别的难题,采用综合HTML标签分析分析的方法(包括标签的EJSRF分析、JavaScript编码变形分析、JavaScript语义变性分析、XSS攻击特征模式匹配这4种方法)对Web页面中夹带的恶意跨站脚本进行识别、提取。这种以HTML标签分析为核心的跨站脚本识别与提取技术能够高效准确地区分Web页面中正常的JavaScript与恶意的跨站脚本,使得网络安全检测设备和网络终端能够精确识别、过滤含有恶意跨站脚本的Web页面,同时又能够保证合法的(没有夹杂恶意跨站脚本)的Web页面正常通过。
附图说明
图1为XSS的攻击场景示意图;
图2为实施例一的跨站脚本攻击的检测方法的具体实施流程图;
图3为实施例二的跨站脚本攻击的检测装置的具体实施框图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
实施例一,一种跨站脚本攻击的检测方法,如图2所示,包括:
a、对于捕获到的HTTP返回页面,找到其中的活跃标签(Active Tag,缩写为AT);将所捕获的HTTP返回页面中包括该活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;提取出各活跃标签内的JavaScript脚本;
其中,所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签,所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
b、对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN(Encoding Bytes Number);进行语义还原,得到该JavaScript脚本中利用语义变形的方式进行字符串拼接的次数(即字符串变量被使用的次数)SDN(Semantic Deform Numbe)进行统计;将经过编码和语义还原后的JavaScript脚本与预设的XSS攻击特征进行匹配,得出该JavaScript脚本的特征匹配程度SMD(JavaScript Signature Match Degree);
c、将所述EJSRF、EBN、SDN和SMD加权相加,并将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所述提取出的JavaScript脚本是恶意的跨站脚本,而所捕获的HTTP返回页面中包含XSS攻击;否则认为该JavaScript脚本是合法的,是Web页面自带的安全的JavaScript脚本,而所捕获的HTTP返回页面合法。
对每个捕获到的HTTP返回页面进行上述步骤a到c即可检测HTTP返回页面中是否包含XSS攻击;对不同的HTTP返回页面可以并行进行上述步骤,另外在进行步骤b前提取出JavaScript脚本即可,计算EJSRF的步骤可以和步骤b并行。
本实施例中,所述概率P是通过对大量的HTTP返回页面进行学习得到的,具体说是统计出各HTTP返回页面中各种HTML标签出现次数N,同时统计出每种标签内直接包含JavaScript脚本的次数M,由M/N计算出每种HTML标签内直接出现JavaScript脚本的可能性,即各种HTML标签的概率P。
例如总共学习了100个HTML页面,其中<Font>标签出现了10000次,在这出现的10000次<Font>标签中,有1000个<Font>标签中直接出现了JavaScript,那么,就得到<Font>标签直接内嵌JavaScript的概率为P=1000/10000=0.1。
这里,HTML标签内直接包含JavaScript脚本是指JavaScript脚本直接出现在了该HTML标签之内,也就是说,在该HTML标签与JavaScript脚本之间不能存在其它的HTML标签,该HTML标签即所述活跃标签;对于活跃标签,需要记录下该标签所在的嵌套层次(Nest Level,缩写为NL),即该标签为所在HTTP返回页面中的第几层标签,也就是所在HTTP返回页面中位于该标签外的标签的层数加1。
本实施例中,可以在计算HTTP返回页面中的活跃标签的EJSRF的同时,更新该HTTP返回页面中出现的各标签的统计信息,从而可动态更新这些标签的概率P,以提高准确度;所述步骤a具体包括:
a1、建一个HTML标签缓冲区,此缓冲区存储所有已知的HTTP返回页面中的HTTP标签的统计信息,可以分别用不同缓冲区单元存储不同HTTP标签的统计信息;一个HTTP标签的统计信息包括该HTML标签的出现次数N、该HTML标签作为活跃标签(AT)出现的次数(即直接包含JavaScript脚本的次数)M、该标签所在的嵌套层次(NL)等属性;
a2、捕获到的HTTP返回页面后,按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签Tag;如果所有标签都已提取完,则执行步骤b;
a3、将与该标签Tag对应的HTML标签缓冲区单元中统计信息里的出现次数N加1,如果该标签Tag是活跃标签(AT),还需要将所述统计信息里该标签Tag作为活跃标签(AT)出现的次数M加1,并记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本,然后执行步骤a4;如果该标签Tag不是活跃标签(AT),那么返回步骤a2;
a4、将该HTML标签的概率P的倒数,和所捕获的HTTP返回页面中位于该HTML标签外的各层标签的概率P的倒数累加,然后求出累加所得的和的算数平均值作为该HTML标签的EJSRF;所述标签的概率P的倒数为该标签的N除以M;当没有概率P为0的标签时,除数为该HTML标签的NL,否则除数为该HTML标签的NL减去概率P为0的标签的个数。
实际应用中,当网络情况较稳定时,也不排除当对大量HTTP返回页面进行学习并得到统计信息及概率P后,在计算活跃标签的EJSRF时不进行变动;这样计算活跃标签的EJSRF时只需要进行上述步骤a2、a4以及a3中提取活跃标签中的JavaScript脚本的部分即可,即不更新统计信息,以降低实现复杂度。
本实施例中,所述步骤a1中:
构建的HTML标签缓冲区为线性缓冲区,允许容纳的最大HTML标签数量是固定的,当要存储的HTML标签数量超过最大缓冲区单元数量时,新的HTML标签将被丢弃。
本实施例中,所述步骤a2中:
为了能够对当前标签进行分析,对于每个HTTP返回页面,构建一个存储当前标签的嵌套栈,该嵌套栈的栈顶为当前正在分析的标签,从栈顶至栈底依次是:当前标签、前标签的上一级标签、当前标签的上两级标签......HTTP返回页面的第一层标签。
每次在HTTP返回页面提取到一个新的标签,都要将该标签压入到所述标签的嵌套栈中,对该标签分析完成之后(即遇到了该标签的结束标识),都要将该标签从标签的嵌套栈中弹出,如果页面不存在错误,当分析完一个HTTP返回页面之后,标签的嵌套栈应该正好为空。
本实施例中,所述步骤a3具体包括:
31、首先将与该标签Tag对应的HTML标签缓冲区单元中统计信息里的出现次数N加1;从该标签Tag的内容部分(即标签头加上空格之后的部分)开始分析,如果遇到了JavaScript脚本的起始标签<script>或<script,则认为该标签内直接嵌套了JavaScript脚本,此时认定该标签是活跃标签(AT),否则,认为该标签不是活跃标签;
32、如果该标签是活跃标签(AT),则将所述统计信息里该标签Tag作为活跃标签(AT)出现的次数M加1,并记录该标签Tag的嵌套层次NL,并将夹在<script>......</script>或<script.../>之间的JavaScript内容缓存到JSP缓冲区中,同时需要记录下所缓存的JavaScript脚本的字节数。
本实施例中,所述步骤a4中,先根据HTML标签出现的总次数N、各个HTML标签作为活跃标签(AT)出现的次数M,计算出各个HTML标签作为活跃标签出现(即标签内直接包含JavaScript脚本)的概率P,例如,如果统计得到<font>......</font>标签一共出现了100次,其中作为活跃标签出现的次数为1次,那么<font>......</font>标签作为活跃标签出现的概率P就是1%,将该概率P记录到HTML标签缓冲区的<font>......</font>标签单元中;
将所提取的标签压入标签的嵌套栈中,然后计算该AT的EJSRF。例如,如果当前正在分析的活跃标签为<font>......</font>标签,其嵌套关系为:
<HTML>
<BODY>
<TABLE>
<TR>
<TD>
<FONT>
<SCRIPT>
......
</SCRIPT>
</FONT>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
那么在标签的嵌套栈中,从栈顶到栈底所保存的标签依次是:<FONT>、<TD>、<TR>、<TABLE>、<BODY>、<HTML>,在计算<FONT>......</FONT>标签的EJSRF的时候,需要将标签的嵌套栈中的所有HTML标签的作为活跃标签出现概率P的数值取倒数后相加,求得算数平均数作为EJSRF;需要注意的是,如果某个HTML标签作为活跃标签出现的概率P是0,那么此HTML标签不参与此次计算,例如,如果<HTML>标签作为AT出现的概率P是0、<BODY>标签作为AT出现的概率P是98%,<TABLE>标签作为AT出现的概率P是30%,<TR>标签作为AT出现的概率P是70%,<TD>标签作为AT出现的概率P是40%,<FONT>标签作为AT出现的概率P是1%,那么计算出<FONT>标签的EJSRF的值就是:
(100/98+100/30+100/70+100/40+100/1)/5=21.66。
其中,当没有概率P为0的标签时,计算EJSRF时需要累加的所述倒数的个数,也就是除数为NL;如果存在概率P为0的标签,则计算EJSRF时需要累加的倒数的个数(即除数)为NL减去概率P为0的标签的个数;比如标签<FONT>......</FONT>的NL为6,存在一个概率P为0的标签,因此是将5个所述倒数相加,并除以5得到标签<FONT>......</FONT>的EJSRF。
本实施例中,所述步骤b是分析活跃标签(AT)内的JavaScript脚本的可疑变形程度,即对该脚本的编码变形、语义变换程度进行分析,并给出具体的可疑变形分值(Suspicious Deform Value,缩写为SDV);
可以预先构建一跨站脚本攻击特征库(XSS Signature DataBase,缩写为XSSDB),将所有可收集到的XSS攻击特征添加到XSSDB之中;
对活跃标签(AT)内的JavaScript进行编码和语义还原,将该JavaScript还原为未变形的等价编码与语义,然后再将还原后的JavaScript与XSSDB中的XSS攻击特征进行对比,根据匹配程度,给出该JavaScript脚本的特征匹配程度(JavaScript Signature Match Degree,缩写为SMD)。
本实施例中,所述步骤b具体包括:
b1、首先对提取出的JavaScript脚本进行逐字符的编码还原,把通过16进制或10进制编码转换的JavaScript脚本转换成编码前的脚本,同时统计被编码的字符数量EBN;
比如AT内的JavaScript是如下的一段脚本:
%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E
将该JavaScript脚本进行编码还原,使该JavaScript脚本内的所有字符都还原成可打印的ASCII字符如下:
<script>alert(document.cookie)</script>
可以看出,在这段JavaScript中,采用了16进制编码对特殊字符:<>()/进行了编码,并且被编码的字符的个数是5,那么,就可以得出该JavaScript脚本的EBN为5。
b2、其次对经过步骤b1编码还原之后的JavaScript脚本进行语义还原,将通过字符串常量或字符串变量进行字符串拼接的语句进行语义分析,代入字符串常量或字符串变量的语义以还原出拼接之后的字符串,并用拼接之后的字符串替代原脚本中的语句,同时对这种利用语义变形的方式进行字符串拼接的次数(字符串变量被使用的次数)SDN进行统计。
比如AT内的JavaScript是如下的一段脚本:
<script>
var url=″http://www.hacker.com″;
var doc=″document″
var loc=″location″;
var src=eval(doc+″.″+loc);
src.href=url;
</script>
对这段JavaScript进行语义还原,记录各变量的语义,并将各变量用其语义替代后得到的脚本如下:
<script>
document.location.href=″http://www.hacker.com″;
</script>
可以看出,该脚本对字符串进行了拼接,通过3个字符串变量拼接出了一个字符串赋值语句,并且每个字符串变量在定义的时候都用字符串常量进行了初始化,其中,字符串变量url被使用了1次,字符串变量doc被使用了1次,字符串变量loc被使用了1次,字符串变量src被使用了1次,所以得到该JavaScript脚本的SDN为1+1+1+1=4。
b3、将经过编码还原和语义转换后的JavaScript与XSSDB中的XSS攻击特征进行比对,得出该JavaScript脚本的SMD。
假设XSSDB攻击特征库中的特征的描述如下:
<signature>
<rule>......</rule>
<right>......</right>
</signature>
其中<rule>......</rule>中的字符串即为XSS攻击特征,如:
<rule>document.cookie</rule>
<right>......</right>中存放的是该特征的权重,取值从1至10,包括1和10,如:
<right>7.5</right>
然后将该JavaScript所匹配的所有特征的权重相加,例如,匹配上了三个特征,这三个特征的权重分别为7.5、6.0、8.0,那么就可以得出该JavaScript脚本的XSSDB匹配度SMD为:
SMD=7.5+6.0+8.0=21.5
本实施例中,所述步骤b还可以包括步骤:
根据JavaScript脚本的EBN与SDN加权得出该JavaScript脚本的SDV。
相应的在步骤c中,是用根据JavaScript脚本的EJSRF、SDV和SMD加权相加得到的结果与所述阈值比较,来判断该JavaScript脚本是否为恶意的。
本实施例中,所述步骤c中加权相加后得出JavaScript脚本的XSS攻击可能性分值XAS(XSS Attacks Score),XAS的计算方法如下:
XAS=Alpha×EJSRF+Beta×EBN+Gama×SDN+Delta×SMD;
其中,Alpha+Beta+Gama+Delta=1。
Alpha为EJSRF的权重系数,在大多数情况下,EJSRF作为整个系统判断XSS攻击的最重要的系数,本实施例中其值大于0.4;
Beta为EBN的权重系数,EBN作为判断XSS攻击的仅次于EJSRF的影响因素,本实施例中其值大于0.3;
Gama为SDN的权重系数,由于SDN在判断XSS攻击过程中的重要性仅次于EBN,本实施例中其值大于0.2;
Delta为SMD的权重系数,由于SMD在判断XSS中的重要程度最低,本实施例中其值不超过0.1。
本实施例的一种实施方式中,Alpha=0.4、Beta=0.3、Gama=0.2、Delta=0.1;实际应用中可以根据实际情况和需求更改。
如果计算出来的XAS大于预设的阀值,就认为该JavaScript是攻击者注入的恶意跨站脚本,否则,认为该JavaScript是Web页面自带的安全的JavaScript。
实施例二,一种跨站脚本攻击的检测装置,如图3所示,包括:
指数计算单元,用于将所捕获的HTTP返回页面中包括所述活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签;所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
提取单元,用于对于捕获到的HTTP返回页面,找到其中的活跃标签并通知所述指数计算单元;提取出各活跃标签内的JavaScript脚本;
编码还原单元,用于对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN;
语义还原单元,用于对编码还原后的JavaScript脚本进行语义还原,得到该JavaScript脚本中使用字符串变量的次数SDN;
匹配程度计算单元,将经过编码和语义还原的JavaScript脚本与预设的跨站脚本攻击特征进行匹配,得到该JavaScript脚本的特征匹配程度SMD;
判断单元,用于将所述EJSRF、EBN、SDN和SMD加权相加,将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所捕获到的HTTP返回页面包含跨站脚本攻击。
本实施例中,所述提取单元具体包括:
存储模块,用于存储各HTTP标签的统计信息,包括该HTML标签的出现次数N、该HTML标签作为活跃标签出现的次数M;
活跃标签识别模块,用于按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签,将存储模块中该标签的N加1;如果该标签直接嵌套了JavaScript脚本,则将存储模块中该标签的M加1,在存储模块中记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本放入所述存储模块,并通知所述指数计算单元该标签为活跃标签;否则提取下一个标签;
所述指数计算单元计算所述算数平均值时,从所述存储模块中读取所述活跃标签M和N,以及所捕获的HTTP返回页面中位于该标签外的各层标签的M和N,将所读取的各标签的N分别除以M(即概率P的倒数)后进行累加作为被除数;当没有概率P为0的标签时,将所述活跃标签的NL作为除数,否则将所述活跃标签的NL减去概率P为0的标签的个数后作为除数。
本实施例中,所述编码还原单元对JavaScript脚本进行编码还原是指将通过16进制或10进制编码转换的JavaScript脚本逐字符的转换成编码前的脚本;
所述语义还原单元对JavaScript脚本进行语义还原是指代入字符串常量或字符串变量的语义以还原进行过字符串拼接的语句;
所述匹配程度计算单元将JavaScript脚本与预设的跨站脚本攻击特征进行匹配是指将JavaScript脚本与一预定的XSS攻击特征数据库中的XSS攻击特征进行比对。
本实施例中,所述匹配程度计算单元得到JavaScript脚本的特征匹配程度SMD是指将所述JavaScript脚本所匹配的所有XSS攻击特征的权重相加;各XSS攻击特征的权重分别为1到10中的一个值,包括1和10。
本实施例中,判断单元将所述EJSRF、EBN、SDN和SMD加权相加时,EJSRF、EBN、SDN和SMD的权重分别为0.4、0.3、0.2和0.1。
其它实现细节可以同实施例一中相同。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (10)
1.一种跨站脚本攻击的检测方法,包括:
a、对于捕获到的HTTP返回页面,找到其中的活跃标签;将所捕获的HTTP返回页面中包括该活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;提取出各活跃标签内的JavaScript脚本;所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签,所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
b、对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN;进行语义还原,得到该JavaScript脚本中使用字符串变量的次数SDN;将经过编码和语义还原的JavaScript脚本与预设的跨站脚本攻击特征进行匹配,得出该JavaScript脚本的特征匹配程度SMD;
c、将所述EJSRF、EBN、SDN和SMD加权相加,将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所捕获到的HTTP返回页面包含跨站脚本攻击。
2.如权利要求1所述的方法,其特征在于,所述步骤a具体包括:
a1、存储各HTTP标签的统计信息,包括该HTML标签的出现次数N、该HTML标签作为活跃标签出现的次数M;
a2、捕获到的HTTP返回页面后,按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签;如果所有标签都已提取完,则执行步骤b;
a3、将该标签的N加1;如果该标签直接嵌套了JavaScript脚本,将该标签的M加1,记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本,然后执行步骤a4;否则返回步骤a2;
a4、将该标签的概率P的倒数,和所捕获的HTTP返回页面中位于该标签外的各层标签的概率P的倒数累加,然后求出累加所得的和的算数平均值作为该标签的EJSRF;所述标签的概率P的倒数为该标签的N除以M;当没有概率P为0的标签时,除数为该标签的NL,否则除数为该标签的NL减去概率P为0的标签的个数。
3.如权利要求1或2所述的方法,其特征在于,所述步骤b具体包括:
b1、首先对提取出的JavaScript脚本进行逐字符的编码还原,把通过16进制或10进制编码转换的JavaScript脚本转换成编码前的脚本,得到被编码的字符数量EBN;
b2、对经过步骤b1编码还原之后的JavaScript脚本进行语义还原,代入字符串常量或字符串变量的语义以还原进行过字符串拼接的语句,得到对字符串拼接的次数SDN;
b3、将经过编码还原和语义转换后的JavaScript脚本与一预定的XSS攻击特征数据库中的XSS攻击特征进行比对,得出该JavaScript脚本的SMD。
4.如权利要求3所述的方法,其特征在于,所述步骤b3中:
将所述JavaScript脚本所匹配的所有XSS攻击特征的权重相加;各XSS攻击特征的权重分别为1到10中的一个值,包括1和10。
5.如权利要求1或2所述的方法,其特征在于:
EJSRF、EBN、SDN和SMD的权重分别为0.4、0.3、0.2和0.1。
6.一种跨站脚本攻击的检测装置,其特征在于,包括:
指数计算单元,用于将所捕获的HTTP返回页面中包括所述活跃标签在内的各层标签的概率P取倒数之后相加,并求出算术平均值作为所述活跃标签的内嵌JavaScript合理指数EJSRF;所述活跃标签是与JavaScript脚本之间不存在其它HTML标签的HTML标签;所述标签的概率P为该标签内直接出现JavaScript脚本的概率;
提取单元,用于对于捕获到的HTTP返回页面,找到其中的活跃标签并通知所述指数计算单元;提取出各活跃标签内的JavaScript脚本;
编码还原单元,用于对提取出的JavaScript脚本进行编码还原,得到该JavaScript脚本被编码的字节数量EBN;
语义还原单元,用于对编码还原后的JavaScript脚本进行语义还原,得到该JavaScript脚本中使用字符串变量的次数SDN;
匹配程度计算单元,将经过编码和语义还原的JavaScript脚本与预设的跨站脚本攻击特征进行匹配,得到该JavaScript脚本的特征匹配程度SMD;
判断单元,用于将所述EJSRF、EBN、SDN和SMD加权相加,将相加得到的和与预定的阈值进行比较,如果计算结果超过了给定的阈值,则判定所捕获到的HTTP返回页面包含跨站脚本攻击。
7.如权利要求6所述的装置,其特征在于,所述提取单元具体包括:
存储模块,用于存储各HTTP标签的统计信息,包括该HTML标签的出现次数N、该HTML标签作为活跃标签出现的次数M;
活跃标签识别模块,用于按照嵌套的顺序从外向内依次提取所捕获的HTTP返回页面中的一个HTML标签,将存储模块中该标签的N加1;如果该标签直接嵌套了JavaScript脚本,则将存储模块中该标签的M加1,在存储模块中记录该标签Tag的嵌套层次NL,提取该标签中的JavaScript脚本放入所述存储模块,并通知所述指数计算单元该标签为活跃标签;否则提取下一个标签;
所述指数计算单元计算所述算数平均值时,从所述存储模块中读取所述活跃标签M和N,以及所捕获的HTTP返回页面中位于该标签外的各层标签的M和N,将所读取的各标签的N分别除以M后进行累加作为被除数;当没有概率P为0的标签时,将所述活跃标签的NL作为除数,否则将所述活跃标签的NL减去概率P为0的标签的个数后作为除数。
8.如权利要求6或7所述的装置,其特征在于:
所述编码还原单元对JavaScript脚本进行编码还原是指将通过16进制或10进制编码转换的JavaScript脚本逐字符的转换成编码前的脚本;
所述语义还原单元对JavaScript脚本进行语义还原是指代入字符串常量或字符串变量的语义以还原进行过字符串拼接的语句;
所述匹配程度计算单元将JavaScript脚本与预设的跨站脚本攻击特征进行匹配是指将JavaScript脚本与一预定的XSS攻击特征数据库中的XSS攻击特征进行比对。
9.如权利要求8所述的装置,其特征在于:
所述匹配程度计算单元得到JavaScript脚本的特征匹配程度SMD是指将所述JavaScript脚本所匹配的所有XSS攻击特征的权重相加;各XSS攻击特征的权重分别为1到10中的一个值,包括1和10。
10.如权利要求6或7所述的装置,其特征在于:
判断单元将所述EJSRF、EBN、SDN和SMD加权相加时,EJSRF、EBN、SDN和SMD的权重分别为0.4、0.3、0.2和0.1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085034A CN101901221B (zh) | 2009-05-27 | 2009-05-27 | 一种跨站脚本攻击的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085034A CN101901221B (zh) | 2009-05-27 | 2009-05-27 | 一种跨站脚本攻击的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101901221A true CN101901221A (zh) | 2010-12-01 |
CN101901221B CN101901221B (zh) | 2012-08-29 |
Family
ID=43226764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910085034A Expired - Fee Related CN101901221B (zh) | 2009-05-27 | 2009-05-27 | 一种跨站脚本攻击的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101901221B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780684A (zh) * | 2011-05-12 | 2012-11-14 | 同济大学 | Xss防御系统 |
CN103139138A (zh) * | 2011-11-22 | 2013-06-05 | 飞塔公司 | 一种基于客户端检测的应用层拒绝服务防护方法及系统 |
CN103699841A (zh) * | 2013-12-20 | 2014-04-02 | 北京奇虎科技有限公司 | 拦截编码绕过的方法及设备 |
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及系统 |
CN105871774A (zh) * | 2015-01-19 | 2016-08-17 | 杭州迪普科技有限公司 | 基于脚本语言的报文处理方法及装置 |
CN106357622A (zh) * | 2016-08-29 | 2017-01-25 | 北京工业大学 | 基于软件定义网络的网络异常流量检测防御系统 |
CN108462633A (zh) * | 2016-12-09 | 2018-08-28 | 中兴通讯股份有限公司 | 基于sdn的网络安全路由调度方法及系统 |
CN108563946A (zh) * | 2018-04-17 | 2018-09-21 | 广州大学 | 一种浏览器挖矿行为检测的方法、浏览器插件和系统 |
CN109165507A (zh) * | 2018-07-09 | 2019-01-08 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN109218296A (zh) * | 2018-08-29 | 2019-01-15 | 天津大学 | 基于改进csp策略的xss防御系统和方法 |
CN109657469A (zh) * | 2018-12-07 | 2019-04-19 | 腾讯科技(深圳)有限公司 | 一种脚本检测方法及装置 |
CN110309658A (zh) * | 2019-06-27 | 2019-10-08 | 暨南大学 | 一种基于强化学习的不安全xss防御系统识别方法 |
CN110401660A (zh) * | 2019-07-26 | 2019-11-01 | 秒针信息技术有限公司 | 虚假流量的识别方法、装置、处理设备及存储介质 |
CN110650117A (zh) * | 2019-08-01 | 2020-01-03 | 平安科技(深圳)有限公司 | 跨站攻击防护方法、装置、设备及存储介质 |
CN110765455A (zh) * | 2018-09-04 | 2020-02-07 | 哈尔滨安天科技集团股份有限公司 | 基于属性域异常调用的恶意文档检测方法、装置及系统 |
CN112039877A (zh) * | 2020-08-28 | 2020-12-04 | 四川长虹电器股份有限公司 | 基于kld的存储型xss注入的检测方法 |
CN114268475A (zh) * | 2021-12-13 | 2022-04-01 | 北京知道创宇信息技术股份有限公司 | 恶意脚本拦截方法、系统、服务器及计算机可读存储介质 |
CN115022086A (zh) * | 2022-07-19 | 2022-09-06 | 北京安天网络安全技术有限公司 | 网络安全防御方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282081C (zh) * | 2003-08-04 | 2006-10-25 | 联想(北京)有限公司 | 一种入侵检测方法 |
CN1300982C (zh) * | 2003-12-05 | 2007-02-14 | 中国科学技术大学 | 一种分层协同的网络病毒和恶意代码识别方法 |
-
2009
- 2009-05-27 CN CN200910085034A patent/CN101901221B/zh not_active Expired - Fee Related
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780684A (zh) * | 2011-05-12 | 2012-11-14 | 同济大学 | Xss防御系统 |
CN102780684B (zh) * | 2011-05-12 | 2015-02-25 | 同济大学 | Xss防御系统 |
CN103139138A (zh) * | 2011-11-22 | 2013-06-05 | 飞塔公司 | 一种基于客户端检测的应用层拒绝服务防护方法及系统 |
CN103699841A (zh) * | 2013-12-20 | 2014-04-02 | 北京奇虎科技有限公司 | 拦截编码绕过的方法及设备 |
CN105871774A (zh) * | 2015-01-19 | 2016-08-17 | 杭州迪普科技有限公司 | 基于脚本语言的报文处理方法及装置 |
CN105871774B (zh) * | 2015-01-19 | 2019-09-06 | 杭州迪普科技股份有限公司 | 基于脚本语言的报文处理方法及装置 |
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及系统 |
CN106357622B (zh) * | 2016-08-29 | 2019-06-14 | 北京工业大学 | 基于软件定义网络的网络异常流量检测防御系统 |
CN106357622A (zh) * | 2016-08-29 | 2017-01-25 | 北京工业大学 | 基于软件定义网络的网络异常流量检测防御系统 |
CN108462633A (zh) * | 2016-12-09 | 2018-08-28 | 中兴通讯股份有限公司 | 基于sdn的网络安全路由调度方法及系统 |
CN108563946A (zh) * | 2018-04-17 | 2018-09-21 | 广州大学 | 一种浏览器挖矿行为检测的方法、浏览器插件和系统 |
CN109165507A (zh) * | 2018-07-09 | 2019-01-08 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN109218296A (zh) * | 2018-08-29 | 2019-01-15 | 天津大学 | 基于改进csp策略的xss防御系统和方法 |
CN110765455A (zh) * | 2018-09-04 | 2020-02-07 | 哈尔滨安天科技集团股份有限公司 | 基于属性域异常调用的恶意文档检测方法、装置及系统 |
CN109657469A (zh) * | 2018-12-07 | 2019-04-19 | 腾讯科技(深圳)有限公司 | 一种脚本检测方法及装置 |
CN109657469B (zh) * | 2018-12-07 | 2023-02-24 | 腾讯科技(深圳)有限公司 | 一种脚本检测方法及装置 |
CN110309658B (zh) * | 2019-06-27 | 2021-02-05 | 暨南大学 | 一种基于强化学习的不安全xss防御系统识别方法 |
CN110309658A (zh) * | 2019-06-27 | 2019-10-08 | 暨南大学 | 一种基于强化学习的不安全xss防御系统识别方法 |
CN110401660A (zh) * | 2019-07-26 | 2019-11-01 | 秒针信息技术有限公司 | 虚假流量的识别方法、装置、处理设备及存储介质 |
CN110401660B (zh) * | 2019-07-26 | 2022-03-01 | 秒针信息技术有限公司 | 虚假流量的识别方法、装置、处理设备及存储介质 |
CN110650117A (zh) * | 2019-08-01 | 2020-01-03 | 平安科技(深圳)有限公司 | 跨站攻击防护方法、装置、设备及存储介质 |
WO2021017318A1 (zh) * | 2019-08-01 | 2021-02-04 | 平安科技(深圳)有限公司 | 跨站攻击防护方法、装置、设备及存储介质 |
CN112039877A (zh) * | 2020-08-28 | 2020-12-04 | 四川长虹电器股份有限公司 | 基于kld的存储型xss注入的检测方法 |
CN112039877B (zh) * | 2020-08-28 | 2022-04-01 | 四川长虹电器股份有限公司 | 基于kld的存储型xss注入的检测方法 |
CN114268475A (zh) * | 2021-12-13 | 2022-04-01 | 北京知道创宇信息技术股份有限公司 | 恶意脚本拦截方法、系统、服务器及计算机可读存储介质 |
CN115022086A (zh) * | 2022-07-19 | 2022-09-06 | 北京安天网络安全技术有限公司 | 网络安全防御方法、装置、电子设备及存储介质 |
CN115022086B (zh) * | 2022-07-19 | 2023-11-21 | 北京安天网络安全技术有限公司 | 网络安全防御方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101901221B (zh) | 2012-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101901221B (zh) | 一种跨站脚本攻击的检测方法和装置 | |
CN104767757B (zh) | 基于web业务的多维度安全监测方法和系统 | |
CN103023712B (zh) | 网页恶意属性监测方法和系统 | |
CN103810425B (zh) | 恶意网址的检测方法及装置 | |
CN103559235B (zh) | 一种在线社交网络恶意网页检测识别方法 | |
CN105359139B (zh) | 安全信息管理系统及安全信息管理方法 | |
CN102737183B (zh) | 网页安全访问的方法及装置 | |
CN103001817B (zh) | 一种实时检测网页跨域请求的方法和装置 | |
CN102624713B (zh) | 网站篡改识别的方法及装置 | |
CN103577755A (zh) | 一种基于支持向量机的恶意脚本静态检测方法 | |
CN102467633A (zh) | 一种安全浏览网页的方法及其系统 | |
CN110035075A (zh) | 钓鱼网站的检测方法、装置、计算机设备及存储介质 | |
CN103179095A (zh) | 一种检测钓鱼网站的方法及客户端装置 | |
CN103778151A (zh) | 一种识别特征群体的方法及装置和搜索方法及装置 | |
CN109450879A (zh) | 用户访问行为监控方法、电子装置和计算机可读存储介质 | |
CN109194677A (zh) | 一种sql注入攻击检测方法、装置及设备 | |
CN112989348B (zh) | 攻击检测方法、模型训练方法、装置、服务器及存储介质 | |
CN107341399A (zh) | 评估代码文件安全性的方法及装置 | |
CN105975523A (zh) | 一种基于栈的暗链检测方法 | |
CN108337269A (zh) | 一种WebShell检测方法 | |
CN104598595A (zh) | 欺诈网页检测方法及相应装置 | |
CN107800686A (zh) | 一种钓鱼网站识别方法和装置 | |
CN114528457A (zh) | Web指纹检测方法及相关设备 | |
CN103220277B (zh) | 监控跨站脚本攻击的方法、装置及系统 | |
CN107180194B (zh) | 基于视觉分析系统进行漏洞检测的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120829 Termination date: 20190527 |