一种识别网页中CSRFtoken元素的方法与流程

文档序号:12465415阅读:1539来源:国知局
一种识别网页中CSRF token元素的方法与流程

本发明涉及CSRF识别领域,具体涉及一种识别网页中CSRF token元素的方法。



背景技术:

CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于Cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,并且该信息不存在于Cookie之中。

系统开发者可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。这种网页表单中嵌入CSRF token的方法有效阻止了点击链接触发CSRF漏洞,但同时对于自动化漏洞检测工具也造成了拦截,导致自动化漏洞检测工具不能够正常提交网页表单请求,造成对网页表单中的输入参数的漏洞不能进行检测。

现有技术通过收集常见Web框架的CSRF token值名称作为黑名单,例如表单input名称为token,csrf_token,csrfmiddlewaretoken等,这些参数名称在黑名单中,那么在HTTP请求过程中就认为是CSRF token参数。在后续的HTTP请求中会获取CSRF token参数值,构造正确的不被服务端拦截的HTTP请求。

因为是基于黑名单方式来判别是否是CSRF token参数,这种方式依赖收集的黑名单库的数量及准确性,存在大量的漏报情况,覆盖不全,不能收集覆盖所有的网页表单中CSRF token的参数名称。也会对网页表单中某些正常的,非CSRF token表单参数造成误判。

相关术语解释

CSRF:(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,具有很大的危害性。具体来讲,可以这样理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作。

URL:统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

Form:网页表单,用于为用户输入创建HTML表单。表单用于向服务器传输数据。

莱文斯坦距离:又称Levenshtein距离,是编辑距离(edit distance)的一种,指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。



技术实现要素:

本发明所要解决的技术问题是提供一种识别网页中CSRF token元素的方法,通过对目标网页发起两次不同会话的HTTP请求,解析出网页表单中input类型为hidden的参数值,再通过判别计算参数值的莱文斯坦距离比例而不是黑名单名称来判别是否为CSRF token参数。

为解决上述技术问题,本发明采用的技术方案是:

一种识别网页中CSRF token元素的方法,包括以下步骤:

步骤1:创建HTTP第一个会话,通过获取目标页面源代码,检查页面源代码是否存在<form>标签,存在则进行后续步骤;

步骤2:检索第一个会话的网页源码<form>标签内是否存在input类型为hidden的表单元素,存在则进行后续步骤;

步骤3:创建HTTP第二个会话,通过获取目标页面源代码,检查页面源代码是否存在<form>标签,存在则进行后续步骤;

步骤4:检索第二个会话的网页源码<form>标签内是否存在input类型为hidden的表单元素,存在则进行后续步骤;

步骤5:依次比较第一个会话和第二个会话的表单中input类型为hidden的表单元素值,若相同input参数名称的值发生变化,则标记为疑似CSRF token值,进入后续步骤;

步骤6:计算疑似CSRF token表单元素值的莱文斯坦距离比例,若所得到的比例大于一个确定的阈值,则该参数的CSRF token随机性不够,做误报处理,否则,判别该参数为CSRF token。

与现有技术相比,本发明的有益效果是:通过动态的基于算法识别CSRF token元素,提高了CSRF token元素的识别率,极大地减少了漏报。

附图说明

图1是本发明一种识别网页中CSRF token元素的方法的流程示意图。

图2是本发明实例中检索第一个会话示意代码。

图3是本发明实例中检索第二个会话示意代码。

图4是本发明中计算参数值的莱文斯坦距离比例。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明一种识别网页中CSRF token元素的方法的具体步骤如下:

1、创建HTTP第一个会话,通过获取目标页面源代码,检查页面源代码是否存在<form>标签,存在则进入下一步。

2、检索第一个会话的网页源码<form>标签内是否存在input类型为hidden的表单元素,如图2所示,存在则进入下一步。

3、创建HTTP第二个会话,通过获取目标页面源代码,检查页面源代码是否存在<form>标签,存在则进入下一步。

4、检索第二个会话的网页源码<form>标签内是否存在input类型为hidden的表单元素,如图3所示,存在则进入下一步。

5、依次比较第一个会话和第二个会话的表单中input类型为hidden的表单元素值,如果相同input参数名称的值发生变化,则标记为疑似CSRF token值,进入下一步。

6、如图4所示,计算疑似CSRF token表单元素值的莱文斯坦距离比例(ratio),如果所得到的比例大于一个确定的阈值,该标记(参数)的CSRF token随机性不够,做误报处理;否则,判别该参数为CSRF token。

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