一种检测csrf漏洞的方法和装置制造方法

文档序号:6488644阅读:186来源:国知局
一种检测csrf漏洞的方法和装置制造方法
【专利摘要】本发明提供了一种检测CSRF漏洞的方法和装置,其中方法包括:S1、获取待检测URL对应的登录页面的源代码;S2、从获取登录页面的源代码中提取请求表单;S3、对提取的请求表单分别检测是否存在CSRF漏洞。本发明从待检测URL对应的登录页面的源代码中提取请求表单进行CSRF漏洞检测,从而减少了对大量没有危害性的请求表单的分析,节约了时间,提高了检测效率。更进一步地,在对提取的请求表单进行检测时,首先基于标签和属性值进行分析将请求表单分为存在CSRF漏洞的请求表单、安全的请求表单和嫌疑表单,对嫌疑表单进一步基于构造伪造请求并对比返回结果的方式分析是否存在CSRF漏洞,双重保险的方式提高了检测精度。
【专利说明】—种检测CSRF漏洞的方法和装置
【【技术领域】】
[0001]本发明涉及计算机安全【技术领域】,特别涉及一种检测跨站请求伪造(CSRF)漏洞的方法和装置。
【【背景技术】】
[0002]产品的安全涉及到用户的利益,若攻击者利用跨站请求伪造(CSRF,Cross-siterequest forgery)漏洞对合法用户进行攻击,便可以在合法用户无意识的情况下进行某些隐私操作,比如进行转账操作,这就会直接关系到用户的经济利益,因此,检测CSRF漏洞十分重要。
[0003]现有检测CSRF漏洞的方式是对某一页面的所有请求表单(HTTP请求信息)都进行收集和识别以检测是否存在CSRF嫌疑,然后通过构造伪造请求并对比伪造请求的返回信息之间的相似度来确定是否是有CSRF攻击倾向的伪造请求。然而这种方式需要针对所有HTTP请求信息都进行收集分析,但有些请求表单是良性的,所谓良性的表单是指即使这个表单存在CSRF漏洞但也不影响到业务逻辑,那么此表单就没有危害性。由于对请求表单进行CSRF识别的复杂度较高,对大量没有危害性的请求表单进行分析显然浪费了时间,降低了检测效率。

【发明内容】

[0004] 本发明提供了一种检测CSRF漏洞的方法和装置,以便于提高CSRF漏洞的检测效率。
[0005]具体技术方案如下:
[0006]一种检测跨站请求伪造(CSRF)漏洞的方法,该方法包括:
[0007]S1、获取待检测URL对应的登录页面的源代码;
[0008]S2、从获取的登录页面的源代码中提取请求表单;
[0009]S3、对提取的请求表单分别检测是否存在CSRF漏洞。
[0010]根据本发明一优选实施例,所述步骤SI具体包括:
[0011]将不带cookie请求所述待检测URL获得的页面源代码和带cookie请求所述待检测URL获得的页面的源代码进行对比,获取带cookie请求所述待检测URL获得的页面的源代码中与不带cookie请求所述待检测URL获得的页面源代码不同的部分为所述待检测URL对应的登录页面的源代码。
[0012]根据本发明一优选实施例,在所述步骤SI之前还包括对待检测URL的页面源代码进行的噪声过滤步骤:
[0013]对所述待检测URL进行N次请求,对N次请求得到的页面源代码取交集,在取交集得到的页面源代码基础上执行步骤SI,所述N为2以上的整数。
[0014]根据本发明一优选实施例,在所述获取不同部分的源代码过程中,记录带cookie请求所述待检测URL获得的页面的源代码中与不带cookie请求所述待检测URL获得的页面源代码不同的请求表单ID;
[0015]在所述步骤S2中获取所述不同的请求表单ID对应的请求表单。
[0016]根据本发明一优选实施例,所述步骤S3中对各请求表单检测是否存在CSRF漏洞具体包括:
[0017]判断请求表单是否存在表示提交操作的标签且不存在包含隐藏域的标签,如果是,确定该请求表单存在CSRF漏洞,所述待检测URL存在CSRF漏洞。
[0018]根据本发明一优选实施例,如果请求表单不存在表示提交操作的标签,则确定该请求表单安全;如果存在表示提交操作的标签且存在包含隐藏域的标签,则确定该请求表单为嫌疑表单。
[0019]根据本发明一优选实施例,如果确定为嫌疑表单的请求表单中不包含Token数据,则确定该请求表单为存在CSRF漏洞的表单;如果确定为嫌疑表单的请求表单中包含Token数据,则从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
[0020]根据本发明一优选实施例,所述步骤S3中对各请求表单检测是否存在CSRF漏洞具体包括:
[0021]从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
[0022]根据本发明一优选实施例,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体包括:
[0023]遍历请求表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,嫌疑请求和伪造请求采用请求表单中的Token数据,对嫌疑请求和伪造请求中的cookie赋予不同的可登陆的值。
[0024]根据本发明一优选实施例,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体包括:
[0025]遍历嫌疑表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,保持cookie不变,在嫌疑请求中采用请求表单中的Token数据,对伪造请求中的token数据进行随机赋值。
[0026]根据本发明一优选实施例,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞具体包括:
[0027]如果- TH,则确定该请求表单不存在CSRF漏洞,否则确定该请求表单存在
【权利要求】
1.一种检测跨站请求伪造(CSRF)漏洞的方法,其特征在于,该方法包括: 51、获取待检测URL对应的登录页面的源代码; 52、从获取的登录页面的源代码中提取请求表单; 53、对提取的请求表单分别检测是否存在CSRF漏洞。
2.根据权利要求1所述的方法,其特征在于,所述步骤SI具体包括: 将不带cookie请求所述待检测URL获得的页面源代码和带cookie请求所述待检测URL获得的页面的源代码进行对比,获取带cookie请求所述待检测URL获得的页面的源代码中与不带cookie请求所述待检测URL获得的页面源代码不同的部分为所述待检测URL对应的登录页面的源代码。
3.根据权利要求1所述的方法,其特征在于,在所述步骤SI之前还包括对待检测URL的页面源代码进行的噪声过滤步骤: 对所述待检测URL进行N次请求,对N次请求得到的页面源代码取交集,在取交集得到的页面源代码基础上执行步骤SI,所述N为2以上的整数。
4.根据权利要求2所述的方法,其特征在于,在所述获取不同部分的源代码过程中,记录带cookie请求所述待检测URL获得的页面的源代码中与不带cookie请求所述待检测URL获得的页面源代码不同的请求表单ID ; 在所述步骤S2中获取所述不同的请求表单ID对应的请求表单。
5.根据权利要求1所述的方法,其特征在于,所述步骤S3中对各请求表单检测是否存在CSRF漏洞具体包括: 判断请求表单是否存在表示提交操作的标签且不存在包含隐藏域的标签,如果是,确定该请求表单存在CSRF漏洞,所述待检测URL存在CSRF漏洞。
6.根据权利要求5所述的方法,其特征在于,如果请求表单不存在表示提交操作的标签,则确定该请求表单安全;如果存在表示提交操作的标签且存在包含隐藏域的标签,则确定该请求表单为嫌疑表单。
7.根据权利要求6所述的方法,其特征在于,如果确定为嫌疑表单的请求表单中不包含Token数据,则确定该请求表单为存在CSRF漏洞的表单;如果确定为嫌疑表单的请求表单中包含Token数据,则从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
8.根据权利要求1所述的方法,其特征在于,所述步骤S3中对各请求表单检测是否存在CSRF漏洞具体包括: 从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
9.根据权利要求7或8所述的方法,其特征在于,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体包括: 遍历请求表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,嫌疑请求和伪造请求采用请求表单中的Token数据,对嫌疑请求和伪造请求中的cookie赋予不同的可登陆的值。
10.根据权利要求7所述的方法,其特征在于,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体包括:遍历嫌疑表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,保持cookie不变,在嫌疑请求中采用请求表单中的Token数据,对伪造请求中的token数据进行随机赋值。
11.根据权利要求7或8所述的方法,其特征在于,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞具体包括: 如果
12.—种检测跨站请求伪造CSRF漏洞的装置,其特征在于,该装置包括: 代码获取单元,用于获取待检测URL对应的登录页面的源代码; 表单提取单元,用于从所述代码获取单元获取的登录页面的源代码中提取请求表单; 漏洞检测单元,用于对所述表单提取单元提取的请求表单分别检测是否存在CSRF漏洞。
13.根据权利要求12所述的装置,其特征在于,所述代码获取单元具体配置为: 将不带cookie请求所述待检测URL获得的页面源代码和带cookie请求所述待检测URL获得的页面的源代码进行对比,获取带cookie请求所述待检测URL获得的页面的源代码中与不带cookie请求所述待检测URL获得的页面源代码不同的部分为所述待检测URL对应的登录页面的源代码。
14.根据权利要求12所述的装置,其特征在于,该装置还包括: 噪声过滤单元,用于对所述待检测URL进行N次请求,对N次请求得到的页面源代码取交集,所述N为2以上的整数; 所述代码获取单元在所述噪声过滤单元取交集得到的页面源代码基础上,获取待检测URL对应的登录页面的源代码。
15.根据权利要求13所述的装置,其特征在于,所述代码获取单元在获取不同部分的源代码过程中,记录带cookie请求所述待检测URL获得的页面源代码中与不带cookie请求所述待检测URL获得的页面的源代码不同的请求表单ID ; 所述表单提取单元获取所述不同的请求表单ID对应的请求表单。
16.根据权利要求12所述的装置,其特征在于,所述漏洞检测单元包括: 表单分类子单元,用于判断请求表单是否存在表示提交操作的标签且不存在包含隐藏域的标签,如果是,确定该请求表单存在CSRF漏洞,所述待检测URL存在CSRF漏洞。
17.根据权利要求16所述的装置,其特征在于,如果请求表单不存在表示提交操作的标签,则所述表单分类子单元确定该请求表单安全;如果存在表示提交操作的标签且存在包含隐藏域的标签,则所述表单分类子单元确定该请求表单为嫌疑表单。
18.根据权利要求17所述的装置,其特征在于,所述漏洞检测单元还包括:漏洞检测子单元; 所述表单分类子单元还用于如果确定为嫌疑表单的请求表单中不包含Token数据,则确定该请求表单为存在CSRF漏洞的表单;如果确定为嫌疑表单的请求表单中包含Token数据,则将该请求表单提供给所述漏洞检测子单元; 所述漏洞检测子单元,用于从该请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求,对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
19.根据权利要求12所述的装置,其特征在于,所述漏洞检测单元具体包括: 请求伪造子单元,用于从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求; 相似度判断子单元,用于对比嫌疑请求和伪造请求的返回结果之间的相似程度以确定是否存在CSRF漏洞。
20.根据权利要求18或19所述的装置,其特征在于,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体为: 遍历请求表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,嫌疑请求和伪造请求采用请求表单中的Token数据,对嫌疑请求和伪造请求中的cookie赋予不同的可登陆的值。
21.根据权利要求18所述的装置,其特征在于,所述从请求表单中提取嫌疑参数并构造嫌疑请求和伪造请求具体为: 遍历嫌疑表单中的input标签,将input标签中的参数作为嫌疑参数,为嫌疑请求和伪造请求中的嫌疑参数赋予相同的值,保持cookie不变,在嫌疑请求中采用请求表单中的Token数据,对伪造请求中的token数据进行随机赋值。
22.根据权利要求18或19所述的装置,其特征在于,如果
【文档编号】G06F21/56GK103679018SQ201210328780
【公开日】2014年3月26日 申请日期:2012年9月6日 优先权日:2012年9月6日
【发明者】张娜 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1