基于加密技术的Cookie安全防护方法及服务器与流程

文档序号:16887816发布日期:2019-02-15 22:47阅读:297来源:国知局
基于加密技术的Cookie安全防护方法及服务器与流程

本发明涉及信息安全技术领域,具体来说涉及一种cookie安全防护方法及服务器。



背景技术:

cookie是由服务器端生成,发送给user-agent(一般是浏览器),浏览器会将cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该cookie给服务器(前提是浏览器设置为启用cookie)。cookie名称和值可以由服务器端开发自己定义,对于jsp而言也可以直接写入jsessionid,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等,服务器可以设置或读取cookie中包含信息,借此维护用户跟服务器会话中的状态。

cookie常用于保存用户id,凭证,状态等关键信息,但是目前cookie的内容是以明文保存,或者普通加密的方式对cookie进行保护,仍然面临着容易被网站攻击者获取,通过篡改cookie向服务器发起注入类攻击的风险,如跨站脚本攻击(xss),服务器安全得不到保障。



技术实现要素:

本发明的目的是要解决现有网络传输中的cookie容易被网站攻击者获取,通过cookie发起注入类攻击造成服务器安全性不高的问题,提出一种基于加密技术的cookie安全防护方法及服务器。

本发明解决上述技术问题所采用的技术方案是:基于加密技术的cookie安全防护方法,包括以下步骤:

s01.在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文,根据所述加密密文重写所述set-cookie函数;

s02.将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;

s03.当服务器收到浏览器发送的包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;

s04.判断所述cookie所使用的set-cookie函数的键值是否解密成功,若是,根据解密后的数据重写所述cookie,若否,丢弃所述cookie。

进一步的,为指定发送包含cookie的响应数据包的浏览器所在的客户端,步骤s01中,所述对发送所述cookie的set-cookie函数的键值进行加密之前还包括:

s11.在浏览器向服务器发送的请求数据包中获取ua字段的值以及安装该浏览器的客户端的外网ip地址;

s12.将所述ua字段的值及外网ip地址以字符串的方式拼接;

s13.根据hash算法将所述拼接后的字符串生成密钥。

进一步的,为提高安全性,步骤s01中,所述对发送所述cookie的set-cookie函数的键值进行加密包括:

将所述密钥作为aes加密密钥,根据aes加密函数对所述set-cookie函数的键值进行加密;

步骤s03中,所述对所述cookie所使用的set-cookie函数的键值进行解密包括:

将所述密钥作为aes解密密钥,根据aes解密函数对所述cookie所使用的set-cookie函数的键值进行解密。

本发明还提出一种服务器,所述服务器包括:

set-cookie函数加密单元,用于在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文;

set-cookie函数重写单元,用于根据所述加密密文重写所述set-cookie函数;

数据包发送单元,用于将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;

cookie解密单元,用于当服务器收到浏览器发送包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;

判断单元,用于判断所述cookie所使用的set-cookie函数的键值是否解密成功;

cookie重写单元,用于所述cookie所使用的set-cookie函数的键值解密成功后,根据解密后的数据重写所述cookie。

进一步的,为指定发送包含cookie的响应数据包的浏览器所在的客户端,所述服务器还包括:

获取单元,用于在浏览器向服务器发送的请求数据包中获取ua字段的值以及安装该浏览器的客户端的外网ip地址;

拼接单元,用于将所述ua字段的值及外网ip地址以字符串的方式拼接;

密钥生成单元,用于根据hash算法将所述拼接后的字符串生成密钥。

本发明的有益效果是:本发明所述的基于加密技术的cookie安全防护方法,通过对set-cookie函数的键值进行加密重写,再将重写后的set-cookie函数定义的cookie发送至目标浏览器,当服务器后续收到包含该cookie的请求数据包后,对cookie所使用的set-cookie函数的键值进行解密成功后再读取cookie中的信息,防止网站攻击者窃取cookie,避免用户信息被泄露,防止基于cookie的注入类攻击,如将攻击脚本注入cookie中或对cookie进行篡改对服务器进行攻击,提高了用户信息及服务器的安全性。

附图说明

图1为本发明实施例所述的基于加密技术的cookie安全防护方法的流程示意图。

具体实施方式

下面将结合附图对本发明的实施方式进行详细描述。

本发明所述的基于加密技术的cookie安全防护方法,包括以下步骤:在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文,根据所述加密密文重写所述set-cookie函数;将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;当服务器收到浏览器发送包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;判断所述cookie所使用的set-cookie函数的键值是否解密成功,若是,根据解密后的数据重写所述cookie,若否,丢弃所述cookie。

所述服务器包括:set-cookie函数加密单元,用于在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文;set-cookie函数重写单元,用于根据所述加密密文重写所述set-cookie函数;数据包发送单元,用于将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;cookie解密单元,用于当服务器收到浏览器发送包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;判断单元,用于判断所述cookie所使用的set-cookie函数的键值是否解密成功;cookie重写单元,用于所述cookie所使用的set-cookie函数的键值解密成功后,根据解密后的数据重写所述cookie。

具体来说,服务器收到用户通过浏览器发送的访问请求后,会生成与用户相对应的cookie,即用set-cookie函数定义一个cookie,在定义的过程中,对set-cookie函数的键值进行加密重写,将由重写后的set-cookie函数所定义的cookie封装至服务器返回至浏览器的响应数据包中,并将包含cookie的响应数据包传递至浏览器,在用户的浏览器收到该响应数据包后,将该响应数据包中的cookie进行保存,当该用户通过浏览器再次向服务器发送访问请求时,浏览器会将保存的cookie封装至请求数据包中,在服务器收到包含cookie的请求数据包后,会先对该cookie所使用的set-cookie函数的键值进行解密重写操作,解密成功后才会获取该cookie中的用户信息,并根据该用户信息作出相应的动作,否则,会丢弃该cookie。

实施例

本发明实施例所述的基于加密技术的cookie安全防护方法,如图1所示,包括以下步骤:

s01.在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文,根据所述加密密文重写所述set-cookie函数;

其中,响应数据包是在用户通过浏览器访问服务器资源时,服务器返回送至浏览器的数据包,cookie是响应数据包中的一小段文本信息,服务器返回至浏览器的响应数据根据访问请求可以有所不同,cookie可以是一条也可是多条。

s02.将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;

具体的,将由重写后的set-cookie函数所定义的cookie封装至响应数据包,重写后的set-cookie函数的键值是经过加密的,并将该cookie发送至用户浏览器,以响应浏览器的访问请求,并保证了用户数据在网络传输中的安全性。

s03.当服务器收到浏览器发送包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;

具体的,当该用户通过浏览器再次向服务器发送访问请求后,服务器会收到包括所述cookie的请求数据包,对该cookie所使用的set-cookie函数的键值进行解密处理。

s04.判断所述cookie所使用的set-cookie函数的键值是否解密成功,若是,根据解密后的数据重写所述cookie,若否,丢弃所述cookie所使用的set-cookie函数的键值。

具体的,解密成功后,根据解密后的的数据重写该cookie,解密后的的数据即对set-cookie函数的键值进行加密前的明文,以此获取该cookie中的用户信息,并根据该用户信息作出相应的动作,否则,会丢弃该cookie。

可选的,本实施例所述的基于加密技术的cookie安全防护方法根据高级加密标准(advancedencryptionstandard,以下简称“aes”)进行加密和解密操作,aes加密算法是一种对称加密算法,即加密和解密的密钥是相同的,在对set-cookie函数的键值进行加密之前,需要先获取aes加密算法的密钥,包括以下步骤:

s11.在浏览器向服务器发送的请求数据包中获取ua字段的值以及安装该浏览器的客户端的外网ip地址;

s12.将所述ua字段的值及外网ip地址以字符串的方式拼接;

s13.根据hash算法将所述拼接后的字符串生成密钥。

其中,ua字段的值以及安装该浏览器的客户端的外网ip地址用于指向浏览器所在的客户端,使响应数据包能够返回至浏览器,根据hash函数将输入的字符串生成固定长度的输出,其固定长度根据所需密钥的长度选择,如128位,将该固定长度的输出作为aes加密算法的密钥。

可选的,步骤s01中,所述对发送所述cookie的set-cookie函数的键值进行加密包括:

将所述密钥作为aes加密密钥,根据aes加密函数对所述set-cookie函数的键值进行加密;

步骤s03中,所述对所述cookie所使用的set-cookie函数的键值进行解密包括:

将所述密钥作为aes解密密钥,根据aes解密函数对所述cookie所使用的set-cookie函数的键值进行解密。

以密钥为128位举例说明对所述set-cookie函数的键值进行aes加密和解密的过程:首先将set-cookie函数的键值分割成块,对于每块而言可以写成4*4矩阵,每个矩阵格中按照16进制书写,通过查询aes定义的s盒,分别查询4*4矩阵中每个格子对应的新值,然后对矩阵进行10轮迭代加密处理,在第1轮迭代之前,先将明文和原始密钥进行一次异或加密操作,第1轮到第9轮中的加密函数不变,均包括4个操作:字节代换、行位移、列混合和轮密钥加,最后一轮迭代不执行行列混合,经过10轮迭代后得到密文;aes解密过程中的解密密钥与解密过程中的加密密钥是相同的,解密过程也包括10轮迭代解密过程,解密操作为上述加密操作的逆操作,在此不再赘述。

基于上述技术方案,本实施例还提出一种服务器,所述服务器包括:

set-cookie函数加密单元,用于在服务器发送含有cookie的响应数据包至浏览器之前,对发送所述cookie的set-cookie函数的键值进行加密,获得加密密文;

set-cookie函数重写单元,用于根据所述加密密文重写所述set-cookie函数;

数据包发送单元,用于将含有cookie的响应数据包发送至所述浏览器,所述cookie是由重写后的set-cookie函数定义的;

cookie解密单元,用于当服务器收到浏览器发送包括所述cookie的请求数据包后,对所述cookie所使用的set-cookie函数的键值进行解密;

判断单元,用于判断所述cookie所使用的set-cookie函数的键值是否解密成功;

cookie重写单元,用于所述cookie所使用的set-cookie函数的键值解密成功后,根据解密后的数据重写所述cookie。

可选的,所述服务器还包括:

获取单元,用于在浏览器向服务器发送的请求数据包中获取ua字段的值以及安装该浏览器的客户端的外网ip地址;

拼接单元,用于将所述ua字段的值及外网ip地址以字符串的方式拼接;

密钥生成单元,用于根据hash算法将所述拼接后的字符串生成密钥。

需要说明的是,所述服务器为能够实现上述基于加密技术的cookie安全防护方法的步骤的服务器,对于实施例公开的服务器而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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