防止跨站脚本攻击的方法及系统的制作方法

文档序号:9352846阅读:750来源:国知局
防止跨站脚本攻击的方法及系统的制作方法
【技术领域】
[0001]本发明涉及一种防止跨站脚本攻击的方法及系统。
【背景技术】
[0002]所谓跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(CascadingStyle Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
[0003]XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制--例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击”,而JavaScript是新型的 “ShelICode”。
[0004]目前许多网站有发现存在跨站脚本攻击(XSS)注入的漏洞,在没有源码的情况下可能无法对其漏洞进行修改,有源码情况下,则可能需要手动对每个接口进行修改,操作极其不方便,且对程序员的专业水平要求较高。
[0005]现有专利(申请号:201110207882.5)公开了一种基于网络加速设备的安全防御系统,对购买网络加速服务的各类网站站点进行有效防护。其技术方案为:系统包括系统规则库模块、系统决策模块、系统入侵检测模块以及系统反馈模块,其中系统规则库模块,初始化针对web攻击的规则库文件;系统决策模块对安全检测所需的决策算法进行注册;系统入侵检测模块接收来自web应用程序客户端的请求,根据所述系统决策模块中的决策算法对请求进行内容检测和验证,确保请求的安全性,将检测结果传输给所述系统反馈模块;系统反馈模块对于符合安全性的请求,让请求直接进入安全防御之后的流程,对于不符合安全性的请求,采取相应的防御措施。而该专利中对接口不进行注入检测,防御的准确性不足。

【发明内容】

[0006]本发明所要解决的技术问题是:通过对跨站脚本攻击注入请求进行分析、替换处理,防止跨站脚本攻击注入到系统中。
[0007]为了解决上述技术问题,本发明采用的技术方案为:提供一种防止跨站脚本攻击的方法,包括:
[0008]使用注入检测模块检测站点,生成需要防御的接口 URL参数;
[0009]解析所述接口的URL参数,提取参数名称,生成URL摘要集合;
[0010]解析域名到注入防御模块;
[0011 ] 获取攻击者对注入防御模块的注入请求;
[0012]注入防御模块判断所述注入请求的地址是否在所述URL摘要集合中;
[0013]若是,则注入防御模块替换所述URL参数的参数值及相关关键字,获得安全请求;
[0014]发送所述安全请求到目标服务器WEB站点上。
[0015]为解决上述问题,本发明还提供一种防止跨站脚本攻击注入的系统,包括目标服务器,还包括:
[0016]注入检测模块,用于对站点进行检测;
[0017]URL参数模块,用于使用注入检测模块检测站点,生成接口的URL参数;
[0018]解析提取模块,用于解析所述接口的URL参数,提取参数名称,生成URL摘要集合;
[0019]域名解析模块,用于解析域名到注入防御模块;
[0020]攻击获取模块,用于获取攻击者对注入防御模块的注入请求;
[0021]注入防御模块,用于判断所述注入请求的地址是否在所述URL摘要集合中;
[0022]注入防御模块还用于替换所述URL参数的参数值及相关关键字,获得安全请求;
[0023]发送模块,用于发送所述安全请求到目标服务器WEB站点上。
[0024]本发明的有益效果在于:区别于现有技术,通过对跨站脚本攻击进行分析、替换处理,防止跨站脚本攻击注入到系统中,本发明可以降低对程序员的要求,提高网站的安全性,无需对源代码进行修改,即可自动对站点进行防御。
【附图说明】
[0025]图1为本发明方法实施例一的流程示意图;
[0026]图2为本发明方法实施例二的流程示意图;
[0027]图3为本发明系统实施例三的结构框图;
[0028]图4为本发明系统实施例四的结构框图。
【具体实施方式】
[0029]为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0030]本发明最关键的构思在于:建立需要防御的接口 URL摘要集合,对上述接口的注入请求进行分析,替换参数,防止跨站脚本攻击注入到系统中。
[0031]请参照图1,本发明实施例一提供一种防止跨站脚本攻击的方法,包括如下步骤:
[0032]S1:使用注入检测模块检测站点,生成需要防御的接口 URL参数;
[0033]S2:解析所述接口 URL参数,提取参数名称,生成URL摘要集合;
[0034]S3:解析域名到注入防御模块;
[0035]S4:获取攻击者对注入防御模块的注入请求;
[0036]S5:注入防御模块判断所述注入请求的地址是否在所述URL摘要集合中;
[0037]若是,则执行步骤S6:注入防御模块替换所述URL参数的参数值及相关关键字,获得安全请求;
[0038]S7:发送所述安全请求到目标服务器WEB站点上。
[0039]如图2所示,在实施例一的基础上,本发明实施例二步骤S2具体为:
[0040]S21:解析所述接口的URL参数,剔除参数值;
[0041]S22:生成仅包含参数名称的URL摘要集合。
[0042]其中,步骤S6之后,还包括:
[0043]若否,则执行步骤S60:注入防御模块确认所述请求为安全请求;并执行步骤S7。
[0044]其中,S6步骤具体为:
[0045]S61:替换所有所述参数值;
[0046]S62:根据脚本替换规则库,采用正则表达式替换相关关键字;
[0047]S63:生成安全请求。
[0048]在一个具体的实施例中,可在进行防御前,预先作如下准备:
[0049]通过站点访问日志,对其参数进行解析,分组出接口地址和参数。对分组出来的接口地址进行XSS注入测试,测试出其中存在XSS漏洞的接口,将其保存下来。具体的,可以使用注入检测模块对站点进行XSS注入,以检测站点是否需要防御,对于需要防御的接口,生成接口 URL参数,其中参数包括参数名称和对应的参数值。参数用于传递不同的内容,可以包含各种内容,根据系统实际情况而定,可以是一个数值,文本,文件或其他数据。例如:数值和文本可以使用Get url传递,即Get http://abc.com/ ? id = I中的id是参数名,I是参数值。文件和其他数据可以采用post方式传递,将文件或者数据写在http请求主体中。
[0050]通过程序对记录下来的存在注入漏洞的请求参数进行解析,将存在注入的参数名称提取出,以生成URL摘要集合。其中参数名称是请求的一部分,并与参数值对应。
[0051]例如:请求http://abc.com/? id = l&name = abc 中,其参数名称为 id 和 name,对应的参数值为I和abc ;优选地,将该请求中的参数值剔除,生成仅包含参数名称的URL摘要集合,即http://abc.com/ ? id = &name =,URL摘要集合是指所有记录下来的URL摘要的总和。然后将域名解析到注入防御模块中。
[0052]应当理解的是,剔除参数值后不能保证100%无效跨站脚本攻击注入,但是可以
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1