发明内容
本发明目的在于针对现有方法的缺陷,提供一种用于网络防护的动态cookie验证方法及装置,避免了传统技术中通过脚本语言对URL进行加密的技术手段带来的,无法适配于不同运行环境的问题,本方法无需客户端或服务器对基础的脚本语言进行修改,可移植性高,便于推向市场,有很高的市场价值。
为解决上述技术问题,本发明通过以下方法方案进行实施:
一种用于网络防护的动态cookie验证方法,包括以下步骤:
S1、客户端发送http请求至服务器;所述http请求中包括请求cookie和请求URL;
S2、使用预设的cookie库对所述请求cookie的cookie信息进行解密及验证;所述cookie信息包括cookie名、cookie值;
若验证成功,则将所述http请求定向至所述请求URL所对应的欲访问页面,并将所述欲访问页面作为返回信息;
若验证失败,则将所述http请求定向至一默认页面,并将所述默认页面作为返回信息;
S3、使用加密算法对所述http请求中的特征字段进行加密生成校验cookie值,并随机生成一校验cookie名,将所述校验cookie值和校验cookie名存入所述cookie库;
S4、将所述校验cookie值、校验cookie名和cookie处理模块插入所述返回信息中,所述服务器将所述返回信息发送至所述客户端;所述cookie处理模块用于在所述客户端接收所述返回信息后,使用预设的行为判断规则判断所述客户端的行为是否安全;
S5、在判定所述客户端的行为是安全后,通过加密算法对所述校验cookie值进行加密,得到请求cookie值,并将所述请求cookie值和所述校验cookie名组成新的所述请求cookie,所述新的请求cookie用于插入至所述客户端下一次发出的http请求。
进一步的,所述步骤S1还包括:
使用预设的URL库对所述请求URL进行匹配;
若匹配成功,则进入步骤S2;
若匹配失败,则将所述http请求发送至所述服务器进行正常访问。
进一步的,所述步骤S2包括:
S21、将所述请求cookie的cookie名与所述cookie库中的所述校验cookie名进行匹配;
若匹配成功,则进入步骤S22;
若匹配失败,则将所述http请求定向至所述默认页面,并将所述默认页面作为返回信息,进入步骤S3;
S22、将所述请求cookie的cookie值使用解密算法进行解密得到解密cookie值,将所述解密cookie值与所述cookie库中的所述校验cookie值进行匹配,
若匹配成功,则将所述cookie库中的所述校验cookie值对应的剩余验证次数减一,进入步骤S23;
若匹配失败,则将所述http请求定向至所述默认页面,并将所述默认页面作为返回信息,进入步骤S3;
S23、查询所述cookie库中的所述校验cookie值的所述剩余验证次数;
若所述剩余验证次数大于或等于零,则将所述http请求定向至所述欲访问页面,将所述欲访问页面作为返回信息,进入步骤S3;
若所述剩余验证次数小于零,则从所述cookie库中删去所述校验cookie值和校验cookie名,并将所述http请求定向至所述默认页面,将所述默认页面作为返回信息,进入步骤S3。
进一步的,所述步骤S3中,所述特征字段为所述请求URL,在生成所述校验cookie值后,还包括:
为所述校验cookie值设置所述剩余验证次数,将所述剩余验证次数保存至所述cookie库中。
进一步的,所述步骤S5中,所述客户端的行为包括人机交互设备的输入内容、控制内容、响应频率、响应次数中的一种或多种;所述预设的行为判断规则为:
当所述客户端的行为大于预定的行为阈值时,判定为所述客户端行为为安全;
所述行为阈值包括输入内容长度阈值、控制内容长度阈值、响应频率阈值或响应次数阈值中的一种或多种。
同时,本发明还对应公开了一种用于网络防护的动态cookie验证装置,包括:
cookie验证模块,用于:
接收客户端发送至服务器的http请求,所述http请求中包括请求cookie和请求URL;
使用预设的cookie库对所述请求cookie的cookie信息进行解密及验证;所述cookie信息包括cookie名、cookie值;
在验证成功时将所述http请求定向至所述请求URL所对应的欲访问页面,并将所述欲访问页面作为返回信息;
在验证失败将所述http请求定向至一默认页面,并将所述默认页面作为返回信息;
校验cookie生成模块,用于使用加密算法那对所述http请求中的特征字段进行加密生成校验cookie值,并随机生成一校验cookie名,将所述校验cookie值和校验cookie名存入所述cookie库;
cookie插入模块,用于将所述校验cookie值、校验cookie名和cookie处理模块插入所述返回信息中;
所述cookie处理模块,用于在所述客户端接收所述返回信息后,使用预设的行为判断规则对所述客户端的行为进行判断,判断所述客户端的行为安全后,通过加密算法对所述校验cookie值进行加密得到请求cookie值,并将所述请求cookie值和所述校验cookie名组成新的所述请求cookie,所述新的请求cookie用于插入至所述客户端下一次发出的http请求。
进一步的,本装置还包括:
URL匹配模块,用于使用预设的URL库对所述请求URL进行匹配;若匹配成功,将所述http请求发送至所述cookie验证模块;若匹配失败,将所述http请求发送至所述服务器进行正常访问。
进一步的,所述cookie验证模块包括:
cookie名验证单元,用于:
将所述请求cookie的cookie名与所述cookie库中的所述校验cookie名进行匹配;
在匹配成功时将所述http请求发送至cookie值验证单元;
在匹配失败时将所述http请求定向至所述默认页面,并将所述默认页面作为返回信息;
cookie值验证单元,用于:
将所述请求cookie的cookie值使用解密算法进行解密得到解密cookie值,将所述解密cookie值与所述cookie库中的所述校验cookie值进行匹配,
在匹配成功时将所述cookie库中的所述校验cookie值对应的剩余验证次数减一,将所述http请求发送至cookie次数验证单元;
在匹配失败时将所述http请求定向至所述默认页面,并将所述默认页面作为返回信息;
cookie次数验证单元,用于:
查询所述cookie库中的所述校验cookie值的所述剩余验证次数;
在所述剩余验证次数大于或等于零时,将所述http请求定向至所述欲访问页面,将所述欲访问页面作为返回信息;
在所述剩余验证次数小于零时,从所述cookie库中删去所述校验cookie值和校验cookie名,并将所述http请求定向至所述默认页面,将所述默认页面作为返回信息。
进一步的,所述特征字段为所述请求URL;所述校验cookie生成模块为所述校验cookie值设置所述剩余验证次数,将所述剩余验证次数保存至所述cookie库中。
进一步的,所述客户端的行为包括人机交互设备的输入内容、控制内容、响应频率、响应次数中的一种或多种;所述预设的行为判断规则为:
当所述客户端的行为大于预定的行为阈值时,判定为所述客户端行为为安全;
所述行为阈值包括输入内容长度阈值、控制内容长度阈值、响应频率阈值或响应次数阈值中的一种或多种。
与现有方法相比,本发明的有益方法效果如下:
本发明公开的一种用于网络防护的动态cookie验证方法及装置,可以对客户端传输过来的http请求中的cookie进行验证,在验证后再将http请求发送至服务器进行处理,防止网络攻击者使用大量未经验证的请求来对服务器进行DDOS攻击,消耗服务器的处理资源,造成网络基础设施的瘫痪甚至损毁,同时,对于未通过验证的http请求,通过插入的cookie处理模块对客户端的行为进行判断,在判断客户端的行为是安全正常的机器而不是自动化的恶意程序后,可以对客户端进行筛选防止恶意攻击。
本方法中随机生成初步cookie,通过加密算法生成验证cookie,保证了每次网络访问的cookie都是不同的,防止网络攻击者利用一个截取的cookie对服务器进行反复的访问攻击,同时基于cookie的网络防御思路,也避免了传统技术中通过脚本语言对URL进行加密的技术手段带来的,无法适配于不同运行环境的问题,本方法无需客户端或服务器对基础的脚本语言进行修改,可移植性高,便于推向市场,有很高的市场价值。
具体实施方式
为了充分地了解本发明的目的、特征和效果,以下将结合附图与具体实施方式对本发明的构思、具体步骤及产生的方法效果作进一步说明。
实施例1
如图1所示,本实施例公开了一种用于网络防护的动态cookie验证方法,包括以下步骤:
S1、客户端发送http请求至服务器;http请求中包括请求cookie和请求URL;
S2、使用预设的cookie库对请求cookie的cookie信息进行解密及验证;cookie信息包括cookie名、cookie值;
若验证成功,则将http请求定向至请求URL所对应的欲访问页面,并将欲访问页面作为返回信息;
若验证失败,则将http请求定向至一默认页面,并将默认页面作为返回信息;
S3、使用加密算法对http请求中的特征字段进行加密生成校验cookie值,并随机生成一校验cookie名,将校验cookie值和校验cookie名存入cookie库;
S4、将校验cookie值、校验cookie名和cookie处理模块插入返回信息中,服务器将返回信息发送至客户端;cookie处理模块用于在客户端接收返回信息后,使用预设的行为判断规则判断客户端的行为是否安全;
S5、在判定客户端的行为是安全后,通过加密算法对校验cookie值进行加密,得到请求cookie值,并将请求cookie值和校验cookie名组成新的请求cookie,新的请求cookie用于插入至客户端下一次发出的http请求。
通过上述公开的cookie验证方法,可以对客户端传输过来的http请求中的cookie进行验证,在验证后再将http请求发送至服务器进行处理,防止网络攻击者使用大量未经验证的请求来对服务器进行DDOS攻击,消耗服务器的处理资源,造成网络基础设施的瘫痪甚至损毁,同时,对于未通过验证的http请求,通过插入的cookie处理模块对客户端的行为进行判断,在判断客户端的行为是安全正常的机器而不是自动化的恶意程序后,可以对客户端进行筛选防止恶意攻击。
本方法中随机生成初步cookie,通过加密算法生成验证cookie,保证了每次网络访问的cookie都是不同的,防止网络攻击者利用一个截取的cookie对服务器进行反复的访问攻击,同时基于cookie的网络防御思路,也避免了传统技术中通过脚本语言对URL进行加密的技术手段带来的,无法适配于不同运行环境的问题,本方法无需客户端或服务器对基础的脚本语言进行修改,可移植性高,便于推向市场,有很高的市场价值。
具体的,步骤S1还包括:
使用预设的URL库对请求URL进行匹配;
若匹配成功,则进入步骤S2;
若匹配失败,则将http请求发送至服务器进行正常访问。
通过上述步骤,预设的URL库中储存需要进行cookie验证的URL,通过匹配,可以将无需进行防御或验证的URL直接发至服务器进行正常操作,减轻cookie验证系统的工作量,操作人员也可以根据实际情况,将不需要进行验证或者被攻击可能性低的网站URL移除出URL库,达到精确防御的目的。
具体的,如图2所示,步骤S2包括:
S21、将请求cookie的cookie名与cookie库中的校验cookie名进行匹配;
若匹配成功,则进入步骤S22;
若匹配失败,则将http请求定向至默认页面,并将默认页面作为返回信息,进入步骤S3;
S22、将请求cookie的cookie值使用解密算法进行解密得到解密cookie值,将解密cookie值与cookie库中的校验cookie值进行匹配,
若匹配成功,则将cookie库中的校验cookie值对应的剩余验证次数减一,进入步骤S23;
若匹配失败,则将http请求定向至默认页面,并将默认页面作为返回信息,进入步骤S3;
S23、查询cookie库中的校验cookie值的剩余验证次数;
若剩余验证次数大于或等于零,则将http请求定向至欲访问页面,将欲访问页面作为返回信息,进入步骤S3;
若剩余验证次数小于零,则从cookie库中删去校验cookie值和校验cookie名,并将http请求定向至默认页面,将默认页面作为返回信息,进入步骤S3。
通过上述步骤,可以对cookie的名、值、验证次数进行多重验证,从而进一步提高了验证的有效性和安全性,同时验证次数的设置也使得网络攻击者无法通过一个获取到的cookie进行重复验证来实现网络攻击,从而大大提高了网络的防御效果。
具体的,步骤S3中,特征字段可以为http请求的源地址、MAC地址、header或cookie中的字段,操作人员可以根据具体情况进行选择,在一具体的实施例中,特征字段为请求URL,通过对请求URL进行加密,服务器侧解密出原有的请求URL即可进行URL的验证,从而进一步提高的验证的有效性和安全性。
具体的,步骤S3中,在生成校验cookie值后,还包括:
为校验cookie值设置剩余验证次数,将剩余验证次数保存至cookie库中。
其中,剩余验证次数的值可以根据实际的网络防御严格程度进行调整,越高的严格程度需要设置越少的验证次数,从而保证网路验证的安全性。
具体的,步骤S5中,客户端的行为包括人机交互设备的输入内容、控制内容、响应频率、响应次数中的一种或多种;预设的行为判断规则为:
当客户端的行为大于预定的行为阈值时,判定为客户端行为为安全;
行为阈值包括输入内容长度阈值、控制内容长度阈值、响应频率阈值或响应次数阈值中的一种或多种。
通过上述设置,可以对客户端的行为进行安全性检测,同时,操作人员也可使用其他检测手段或规则对客户端的行为进行检测,包括使用神经网络训练的模型进行检测。
实施例2
同时,如图3所示,本实施例还对应于实施例1的验证方法,公开了一种用于网络防护的动态cookie验证装置,其效果与实施例1中相似,此下不再赘述,本装置包括:
cookie验证模块1,用于:
接收客户端发送至服务器的http请求,http请求中包括请求cookie和请求URL;
使用预设的cookie库对请求cookie的cookie信息进行解密及验证;cookie信息包括cookie名、cookie值;
在验证成功时将http请求定向至请求URL所对应的欲访问页面,并将欲访问页面作为返回信息;
在验证失败将http请求定向至一默认页面,并将默认页面作为返回信息;
校验cookie生成模块2,用于使用加密算法那对http请求中的特征字段进行加密生成校验cookie值,并随机生成一校验cookie名,将校验cookie值和校验cookie名存入cookie库;
cookie插入模块3,用于将校验cookie值、校验cookie名和cookie处理模块4插入返回信息中;
cookie处理模块4,用于在客户端接收返回信息后,使用预设的行为判断规则对客户端的行为进行判断,判断客户端的行为安全后,通过加密算法对校验cookie值进行加密得到请求cookie值,并将请求cookie值和校验cookie名组成新的请求cookie,新的请求cookie用于插入至客户端下一次发出的http请求。
URL匹配模块5,用于使用预设的URL库对请求URL进行匹配;若匹配成功,将http请求发送至cookie验证模块1;若匹配失败,将http请求发送至服务器进行正常访问。
具体的,如图4所示,cookie验证模块1包括:
cookie名验证单元11,用于:
将请求cookie的cookie名与cookie库中的校验cookie名进行匹配;
在匹配成功时将http请求发送至cookie值验证单元12;
在匹配失败时将http请求定向至默认页面,并将默认页面作为返回信息;
cookie值验证单元12,用于:
将请求cookie的cookie值使用解密算法进行解密得到解密cookie值,将解密cookie值与cookie库中的校验cookie值进行匹配,
在匹配成功时将cookie库中的校验cookie值对应的剩余验证次数减一,将http请求发送至cookie次数验证单元13;
在匹配失败时将http请求定向至默认页面,并将默认页面作为返回信息;
cookie次数验证单元13,用于:
查询cookie库中的校验cookie值的剩余验证次数;
在剩余验证次数大于或等于零时,将http请求定向至欲访问页面,将欲访问页面作为返回信息;
在剩余验证次数小于零时,从cookie库中删去校验cookie值和校验cookie名,并将http请求定向至默认页面,将默认页面作为返回信息。
具体的,特征字段为请求URL;校验cookie生成模块为校验cookie值设置剩余验证次数,将剩余验证次数保存至cookie库中。
具体的,客户端的行为包括人机交互设备的输入内容、控制内容、响应频率、响应次数中的一种或多种;预设的行为判断规则为:
当客户端的行为大于预定的行为阈值时,判定为客户端行为为安全;
行为阈值包括输入内容长度阈值、控制内容长度阈值、响应频率阈值或响应次数阈值中的一种或多种。
实施例3
如图5所示,本实施例公开了一种cookie验证方法的具体实施方式,其步骤包括:
1.客户端向服务器发出http请求,本发明的服务器端接收到客户端发过来的请求。
2.本发明的URL匹配模块会对http请求的URL进行匹配,属于被保护对象的URL请求进入本发明的动态cookie验证模块,进入动态cookie验证环节-1。
3.不符合匹配规则的URL请求则被直接转发给后台的服务器进行正常处理。
4.匹配了URL规则的请求会进入本发明的cookie验证环节-1进行检查,看是否存在名字为cookie B的cookie,如果存在,则进入cookie验证环节-2.
5.匹配了URL规则,但是在cookie验证环节-1时没有名字为cookie B的cookie存在的话,则该请求会被重新定向到WEB服务器的一个默认页面,而不是用户请求的URL对应的页面或资源。
6.通过了cookie验证环节-1的请求会进入本发明的cookie验证环节-2进行检查,查看cookie B的值是否合法,如果合法,则进入cookie验证环节-3.
7.通过了cookie验证环节-1的请求会进入本发明的cookie验证环节-2进行检查,查看cookie B的值是否合法,如果不合法,则该请求会被重新定向到WEB服务器的一个默认页面,而不是用户请求的URL对应的页面或资源。
8.通过了cookie验证环节-2的请求会进入本发明的cookie验证环节-3进行检查,查看cookie B的值对应的有效时间和有效次数是否在有效期内,如果在有效期内,则请求则被直接转发给后台的服务器进行正常处理。
9.通过了cookie验证环节-2的请求会进入本发明的cookie验证环节-3进行检查,查看cookie B的值对应的有效时间和有效次数是否在有效期内,如果不在有效期内,则该请求会被重新定向到WEB服务器的一个默认页面,而不是用户请求的URL对应的页面或资源。
10.Web服务器在返回默认页面的内容时,本发明的动态内容插入模块会在http的回应中插入一个动态cookie A(其值为通过加密算法算出一个随机值)以及本发明的浏览器端的动态cookie生成模块,一起返回给客户端浏览器。
11.动态内容插入模块会把生成的cookie A的名字和值同时存入到动态cookie验证模块中,用于客户端浏览器在请求时,对其提交的cookie B的内容进行解密后做比对。
12.Web服务器在用户所请求的URL页面的内容时,本发明的动态内容插入模块会在http的回应中插入一个cookie A(其值为通过加密算法算出一个随机值)以及本发明的浏览器端的动态cookie处理模块,一起返回给客户端浏览器。
13.动态内容插入模块会把生成的cookie A的名字和值同时存入到动态cookie验证模块中,用于客户端浏览器在请求时,对其提交的cookie B的内容进行解密后做比对。
14.客户端浏览器在接受到web服务器返回的内容后,本发明的浏览器端动态cookie处理模块会开始工作,根据所接受到的cookie A的值和浏览器的状态和行为等相关内容生成新的cookie B的值,并会随着用户请求发送出去。
具体的,cookie的生成基于以下步骤:
在本发明接收到服务器的回应内容时,动态cookie验证模块开始工作,使用随机生成的字符作为cookie A的名字,然后获取当前页面的uri作为加密的原始值,然后通过对其进行hash加密的方式,将加密后获取的值作为cookie A对应的值,保存到动态cookie验证模块的内存之中,并且会加入次数的阀值,以用于后续的验证,然后将这个cookie A放入到用户的http的响应包中,与此同时,该模块会生成一个另一个随机的cookie名字,作为cookie B的cookie名字,用于后续的cookie B的识别,并将该cookie名字作为变量放入到动态cookie生成模块当中,一起发送给客户端浏览器。
具体的,cookieB的生成基于以下步骤:
浏览器接受到服务器返回的带有cookie A的回应时,浏览器侧的动态cookie生成模块就开始介入并工作了,首先,该模块会再浏览器侧进行一些针对用户浏览器行为进行检测,检测的内容包括但不限于鼠标和键盘的点击、移动、次数以及时间等(检测的阀值和内容可以进行配置),一旦检测通过之后,该模块会获取cookie A的值,然后通过非对称的加密算法,生成cookie B的值,并将该值与动态cookie验证模块中生成的cookie B的名字组合成cookie B。该cookie B会随着用户请而被发送给本发明的服务器侧的模块来进行后续的验证和处理过程。
具体的,cookieB的解密验证步骤如下:
验证环节中,cookie B中的值会被解密,解密成cookie A原来的值,然后与动态cookie验证模块中所保存的对应的原始加密值进行比对,如果存在,表示验证通过,该请求会被转发,同时,其值对应次数值会减1,如果次数值减到0,则该记录会被动态cookie验证模块从内存中删除。这一对比的用意是防止恶意用户通过正常手段获取到了某一个正常的cookieB的值后,连续的使用该值进行重复攻击或者恶意访问
以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通方法人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本方法领域中方法人员依本发明构思在现有方法基础上通过逻辑分析、推理或者根据有限的实验可以得到的方法方案,均应该在由本权利要求书所确定的保护范围之中。