掌桥专利:专业的专利平台
掌桥专利
首页

访问方法、系统、电子设备和计算机可读存储介质

文献发布时间:2024-01-17 01:14:25


访问方法、系统、电子设备和计算机可读存储介质

技术领域

本申请实施例涉及通信技术领域,特别涉及一种访问方法、系统、电子设备和计算机可读存储介质。

背景技术

随着WEB应用规模的不断扩大和网络技术的不断发展,互联网对于WEB应用的功能需求日益复杂,与此同时,针对WEB安全漏洞的渗透攻击手段层出不穷。WEB应用的安全问题日益突出,WEB应用作为黑客攻击者最直接接触的媒介,有必要针对潜在的安全威胁研发更先进的安全防护技术。

目前,为了对访问过程中传输的参数值进行保护,以避免参数值被攻击,通常采用直接对参数值进行加密的方式,然而参数值本身通常较为复杂冗长,因此,直接对参数值进行加密的方式需要的计算量较大,会占用较多的系统资源。

发明内容

本申请实施例的主要目的在于提出一种访问方法、系统、电子设备和计算机可读存储介质,使得可以在保证访问安全性的同时,节省系统资源。

为至少实现上述目的,本申请实施例提供了一种访问方法,应用于服务端,包括:接收客户端的登录请求;对所述登录请求校验成功后,生成随机数种子并将所述随机数种子发送至所述客户端;接收所述客户端发送的访问请求;其中,所述访问请求中携带名值对,所述名值对中的名为:所述客户端根据所述随机数种子进行序列化运算后得到的值;对所述名值对中的名进行校验,并在校验通过后,确定所述名值对中的值合法。

为至少实现上述目的,本申请实施例还提供了一种访问方法,应用于客户端,包括:向服务端发送登录请求,以供所述服务端对所述登录请求校验成功后,生成随机数种子;接收所述服务端发送的所述随机数种子;向所述服务端发送访问请求,以供所述服务端对所述访问请求中携带的名值对中的名进行校验,并在校验通过后,确定所述名值对中的值合法;其中,所述名值对中的名为:所述客户端根据所述随机数种子进行序列化运算后得到的值。

为至少实现上述目的,本申请实施例还提供了一种访问系统,包括:服务端和客户端;所述客户端,用于向所述服务端发送登录请求;所述服务端,用于对所述登录请求校验成功后,生成随机数种子,并将所述随机数种子发送给所述客户端;所述客户端,还用于向所述服务端发送访问请求;其中,所述访问请求中携带名值对,所述名值对中的名为:所述客户端根据所述随机数种子进行序列化运算后得到的值;所述服务端,还用于对所述访问请求中携带的名值对中的名进行校验,并在校验通过后,确定所述名值对中的值合法。

为至少实现上述目的,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行;在所述电子设备为服务端的情况下,所述至少一个处理器能够执行上述应用于服务端的访问方法;在所述电子设备为客户端的情况下,所述至少一个处理器能够执行上述应用于客户端的访问方法。

为至少实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的访问方法。

本申请实施例提供的访问方法,服务端在接收客户端的登录请求后,对登录请求进行校验,校验成功后,生成随机数种子并将随机数种子发送至客户端,接收客户端发送的访问请求,访问请求中携带名值对,名值对中的名为:客户端对随机数种子进行序列化运算后得到的值,服务端对名值对中的名进行校验,并在校验通过后,确定名值对中的值合法。即,本申请实施例中,无需对名值对中可能较为复杂冗长的值进行加密传输,通过对名值对中的名进行校验以验证名值对中的值是否合法,有利于尽可能节约系统资源,在提升访问安全性的同时可以节约系统资源。

附图说明

图1是本申请实施例中提到的应用于服务端的访问方法的流程示意图;

图2是本申请实施例中提到的步骤104中的对名值对中的名进行校验以及校验成功后执行的步骤的流程图;

图3是本申请实施例中提到的简易报文对比图;

图4是本申请实施例中提到访问方法所涉及的服务端与客户端之间的一种交互流程图;

图5是本申请实施例中提到访问方法所涉及的服务端与客户端之间的另一种交互流程图;

图6是本申请实施例中提到访问方法所涉及的服务端与客户端之间的又一种交互流程图;

图7是本申请实施例中提到的应用于客户端的访问方法的流程示意图;

图8是本申请实施例中提到的访问系统的示意图;

图9是本申请实施例中提到的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本申请的实施例提供了一种访问方法,应用于服务端。本实施例的主要应用场景可以包括:客户端对全球广域网(World Wide Web,WEB)应用的访问,WEB应用包含WEBServer、WEB应用程序接口(Application Programming Interface,API)等WEB服务。本实施例适用于WEB客户端与服务端之间的会话管理,WEB会话管理是用来进行无状态超文本传输协议(Hyper Text Transfer Protocol,HTTP)协议的会话状态支持技术。即本实施例可以基于无状态HTTP会话管理机制,客户端和服务端可以处于基于IP地址的互联网环境中。服务端通过会话管理保存客户端状态,将客户端的请求关联起来。无论客户端和服务端处于哪种网络层面,都可以实现本实施例中的访问方法。

在一个实施例中,访问方法的流程示意图可以参阅图1,包括:

步骤101:接收客户端的登录请求。

步骤102:对登录请求校验成功后,生成随机数种子并将随机数种子发送至客户端。

步骤103:接收客户端发送的访问请求;其中,访问请求中携带名值对,名值对中的名为:客户端根据随机数种子进行序列化运算后得到的值。

步骤104:对名值对中的名进行校验,并在校验通过后,确定名值对中的值合法。

本申请实施例中,无需对名值对中可能较为复杂冗长的值进行加密传输,通过对名值对中的名进行校验以验证名值对中的值是否合法,有利于尽可能节约系统资源,在提升访问安全性的同时可以节约系统资源。

在步骤101中,客户端可以向服务端发送登录WEB应用的登录请求。比如,用户可以通过客户端输入已注册的账号和密码,客户端将用户输入的账号和密码携带在登录请求中发送给服务端。

在步骤102中,服务端可以对登录请求中携带的账号和密码进行校验,以确定对登录请求的校验是否成功。从而,服务端在对登录请求校验成功后,生成随机数种子Seed并将随机数种子Seed发送至客户端。

客户端在收到随机数种子Seed后,可以对根据Seed进行序列化运算,得到C-Name0,并在向服务端发送访问请求时,将Name0作为名值对中的名携带在访问请求中。访问请求携带的名值对中的值可以为希望在访问过程中保护的参数值。

服务端在生成随机数种子Seed后,可以根据Seed进行序列化运算,得到S-Name0,并保存S-Name0,用于对后续客户端发送的访问请求携带的名值对中的名进行校验。

在具体实现中,服务端和客户端可以预先协商序列化运算的算法,从而服务端和客户端在进行序列化运算时,能够采用相同的算法进行运算。序列化运算的算法可以是一种确保运算结果唯一的加密算法,包含但不限于不可逆加密算法。序列化运算的算法可以根据实际需要进行选择,比如可以选择一种加密算法作为序列化运算的算法,或者,对多种加密算法进行叠加,得到序列化运算的算法。然而,本实施例中对序列化运算具体采用的算法并不做具体限定。

在步骤103中,服务端接收到客户端发送的访问请求;其中,访问请求中携带名值对,名值对中的名为:客户端对Seed进行序列化运算后得到的值。

在步骤104中,服务端从访问请求中解析得到访问请求中携带的名值对,并对名值对中的名进行校验。其中,校验的方法可以为:确定名值对中的名与服务端对Seed进行序列化运算后得到的值是否相同。如果相同,可以确定校验通过,否则确定校验不通过。

本实施例中,在对名值对中的名校验通过后,确定名值对中的值合法,从而服务端可以响应来自客户端的访问请求,如果对名值对中的名校验不通过,则确定名值对中的值不合法,从而服务端拒绝来自客户端的访问请求,并且还可以关闭本次服务端与客户端之间的会话。本实施例中采用的校验方式,有利于在提升访问安全性的同时节约系统资源。

在一个实施例中,访问请求携带的名值对中的值包括:服务端与客户端协商的当前有效会话的合法标识Session ID。也就是说,客户端在向服务端发送访问请求时,可以将Session ID作为携带的名值对中的值。本实施例在访问过程中无需对Session ID进行加密传输,通过对访问请求携带的名值对中的名进行校验,以判断Session ID的合法性,尽可能节约系统资源,有利于进行高安全性高可靠性高效率的WEB安全访问会话管理。

其中,Session作为会话状态,常见于现代化WEB应用系统中,主要用于维护当前客户端相关的状态信息,用来追踪每个客户端的会话。Session通过使用服务端生成的Session ID进行标识,用来区别用户。Session对于每个客户端都是独一无二的,用户首次登录WEB应用并与服务端建立连接的时候,服务端会给当前客户端分发一个Session ID作为唯一的有效会话的合法标识。

客户端得到Session ID的方式可以为:服务端在对登录请求校验成功后,接收客户端发送的会话协商请求,服务端生成当前有效会话的合法标识Session ID,服务端将生成的Session ID发送给客户端。在具体实现中,服务端在生成随机数种子后,可以将随机数种子和Session ID一起发送给客户端。

申请人通过研究发现,Session ID一般存在于报文头中传输,由于报文头是明文传输,而Session ID作为一个有效会话的合法标识,极易被拦截伪造。通过会话预测、会话劫持、会话固定等攻击手段,攻击者可以轻易获取有效的Session ID,进而非法会话可以伪装成合法会话对WEB应用进行非法操作攻击,针对此Session ID的攻击极易绕过存在安全漏洞的安全防护系统,对系统造成大量破坏。目前常用Session ID加密传输机制来提升Session ID的安全性,但对于通讯领域小终端设备来说占用了较多的系统资源,而SessionID绑定Cookie安全属性和校验机制亦不能应付日益严峻的安全挑战。基于此,本实施例中,通过在访问请求中携带名值对,名值对中的值为Session ID,对名值对中的名校验通过,代表名值对中的值合法。名值对中的名为结合随机数种子进行序列化运算得到的名,本实施例中相当于对名值对中相对简单的的名加密,而不是对名值对中相对复杂的值加密,因此在保证访问安全性的同时还能减少占用的系统资源。

在一个实施例中,服务端对登录请求校验成功后,生成随机数种子和当前有效会话的合法标识Session ID,服务端对Seed进行序列化运算得到S-Session Name,保存Seed、S-Session Name和Session ID,将Seed和Session ID以名值对Seed:Session ID的形式返回给客户端。客户端收到名值对Seed:Session ID后,将名值对中的名Seed进行序列化运算得到C-Session Name,保存Seed、C-Session Name和Session ID。客户端在需要向服务端发送访问请求时,将名值对C-Session Name:Session ID携带在访问请求中,服务端收到访问请求后,校验其携带的名C-Session Name与保存的S-Session Name是否一致,若一致,则确定本次访问请求中携带的Session ID合法,若不一致则确定本次访问请求中携带的Session ID非法,拒绝执行访问请求并关闭会话。其中,Session ID合法用以证明这次访问请求是合法的客户端发出的。

本实施例中,会话协商请求为服务端与客户端在会话协商阶段由服务端发起的请求,访问请求可以理解为在会话协商成功后,客户端发起的会话合法性校验请求。客户端登录成功后且与服务端成功协商得到Session ID后,客户端的每一个操作、每一次点击、每一次配置都可以理解为是一次访问请求,服务端确认这个访问请求合法,才会处理并将处理结果响应返回至客户端。

在一个实施例中,访问请求携带的名值对中的值包括:客户端请求配置的参数值。此时,访问请求可以理解为参数配置请求。其中,参数配置请求可以理解为服务端与客户端会话建立成功后,由客户端发起的参数配置请求。客户端请求配置的参数值可以为敏感参数的参数值,比如可以为用户输入的手机号码、密码等。本实施例中,可以实现对请求配置的参数的参数值的合法性进行校验,使用简单的参数名称序列化运算替代复杂的参数值加密传输,在减少系统资源消耗的同时兼顾了参数传输过程中的安全性,对于通讯领域小终端设备有很大的参考价值。

在一个实施例中,服务端对登录请求校验成功后,生成随机数种子,服务端对Seed进行序列化运算得到S-Name,保存Seed、S-Name,将Seed返回给客户端。客户端收到Seed后,将Seed进行序列化运算得到C Name,保存Seed和C-Name。客户端在需要向服务端发送参数配置请求时,将名值对C-Name:参数值携带在参数配置请求中,服务端收到参数配置请求后,校验其携带的名C-Name与保存的S-Name是否一致,若一致,则确定本次参数配置请求中携带的参数值合法,若不一致则确定本次参数配置请求中携带的参数值非法,拒绝执行参数配置请求。

在一个实施例中,访问请求中携带的名值对可以包括多个,比如包括上述的名值对C-Session Name:Session ID、名值对C-Name:参数值。服务端确认访问请求中包含的Session ID合法,以证明这次请求是合法的用户发出的。确认Session ID合法后,如果名值对C-Name:参数值中的参数值也合法,则将访问请求中的参数值配置到服务端。

在一个实施例中,名值对被携带在访问请求的报文头中,或者,名值对被携带在访问请求的报文体的表单参数中。本实施例中,名值对可以被携带在访问请求中的不同位置,有利于满足实际应用中的不同需要。由于表单参数支持密文传输,因此名值对被携带在表单参数时,可以进一步结合参数非对称加解密流程进行密文传输,对请求数据需要进行加解密的应用场景提供简单直接安全的框架支持,具备非常高的适应性和可扩展性,有利于进一步提高访问的安全性。

在一个实施例中,访问请求中携带的名值对可以为C-Session Name:Session ID,该C-Session Name:Session ID可以被携带在访问请求的报文头中,也可以被携带在访问请求的报文体的表单参数中。

在一个实施例中,访问请求中携带的名值对可以为C-Name:参数值,该C-Name:参数值可以被携带在访问请求的报文头中,也可以被携带在访问请求的报文体的表单参数中。

在一个实施例中,步骤103中的接收客户端发送的访问请求,包括:接收客户端发送的第i次访问请求,步骤104中的对名值对中的名进行校验的实现流程可以参阅图2,包括:

步骤1041:确定第i次访问请求中携带的名与服务端第2i-1次序列化运算后得到的值是否一致;如是,则执行步骤1042,否则执行步骤1043。

其中,当i=1时,第1次访问请求中携带的名为:客户端根据随机数种子,进行第1次序列化运算,所得到的值;服务端第1次序列化运算后得到的值为:服务端根据随机数种子,进行第1次序列化运算,所得到的值;

当1<i≤n时,第i次访问请求中携带的名为:客户端根据随机数种子和服务端第2i-2次序列化运算后得到的值,进行第i次序列化运算,所得到的值;服务端第2i-1次序列化运算后得到的值为:服务端根据随机数种子和服务端第2i-2次序列化运算后得到的值,进行第2i-1次序列化运算,所得到的值,n为大于或等于2的自然数。

步骤1042:确定校验通过。

步骤1043:确定校验不通过。

可以理解的是,当客户端登录了服务端的WEB应用后,客户端与服务端在会话进行过程中,客户端会持续向服务端发送多次访问请求。本实施例中客户端每次发送的访问请求携带的名值对中的名都不一样,且第一次访问请求之后的其他访问请求携带的名值对中的名都会结合之前的一些历史数据以及随机数种子进行序列化运算得到,增加了名值对中的名被攻击的难度,比如当攻击者拦截某次访问请求携带的名值对中的名时,由于没有历史访问请求携带的名值对中的名和Seed,无法进行序列化运算,所以无法通过服务端的校验,极大的提高了访问过程中的安全性。

下面以访问请求为会话协商请求为例进行说明:

服务端在对客户端的登录请求校验成功后,生成当前有效会话的合法标识Session ID,并生成相对应的随机数种子Seed,将Seed进行序列化运算得到Session Name,保存Seed、Session Name和Session ID并发送名值对Seed:Session ID给客户端保存,用于后续客户端发送会话协商请求携带的名值对的运算。客户端发送第1次会话协商请求中携带的名为:客户端对随机数种子进行第1次序列化运算所得到的值,即客户端发送第1次会话协商请求中携带的名值对Session Name:Session ID中的名Session Name为对Seed序列化运算所得到的值,后续服务端的Session Name需要与Seed进行序列化运算后保存,并将新生成的名值对Session Name:Session ID发送给客户端,客户端在提交下一次会话协商请求时亦需要将接收到的新Session Name与Seed进行序列化运算得到的值作为会话协商请求中携带的名值对中的名,以让服务端校验该名值对中的名,并保存序列化运算后的值为历史Session Name。如此,当攻击者拦截中间传输的Session Name时,由于没有历史Session Name和Seed,无法进行序列化运算,所以无法通过服务端Session Name校验机制,服务端会认为该名Session Name对应的值Session ID是非法的,进而无法通过Session ID伪造当前的会话请求。

为便于理解本实施例中采用序列化运算的方式得到的多次会话协商请求中携带的名值对,与传统的多次会话协商请求中携带的名值对的区别,可以参阅图3中的简易报文对比图。图3左边为传统的多次会话协商请求中携带的名值对,可以看出的是:传统的多次会话协商请求中携带的名值对均相同,且可以明显看出Session-ID后面的一串字符串的含义就是Session ID这一参数的值,任何一次的多次会话协商请求被拦截都容易造成其中携带的名值对被盗取,从而攻击者很容易伪造会话协商请求。图3右边为本实施例中采用序列化运算的方式得到的多次会话协商请求中携带的名值对,其中,AfG1YL可以理解为第1次会话协商请求携带的名值对中的名,ZHOPsY可以理解为第2次会话协商请求携带的名值对中的名,VHGsq2可以理解为第3次会话协商请求携带的名值对中的名。图3右边的3次会话协商请求中携带的名值对均不相同,且并不能看出AfG1YL、ZHOPsY、VHGsq2这几个名之后的值代表的是哪一个参数的参数值。因此,本实施例的技术方案中,即使攻击者拦截了会话协商请求中携带的名值对,由于名值对中的名为序列化运算后得到的名,攻击者也无法从拦截的名值对中得到有效信息,进而也就无法通过拦截的名值对伪造会话协商请求。

本实施例对WEB应用的访问提供了一种基于随机数种子序列化运算机制的Session ID的WEB应用安全访问防护方法,使得攻击者即使拦截了种子序列化运算后的Session Name仍然无法通过校验来使用有效合法的Session ID,从而防护会话预测、会话劫持、会话固定等攻击手段,增强了WEB应用访问的安全程度。

在一个实施例中,在步骤1042确定校验通过后,还包括:

步骤105:根据服务端第2i-1次序列化运算后得到的值与随机数种子,进行第2i次序列化运算,以确定服务端第2i次序列化运算后得到的值。

步骤106:将服务端第2i次序列化运算后得到的值发送给客户端,以供客户端根据服务端第2i次序列化运算后得到的值和随机数种子,进行第i+1次序列化运算,以确定客户端第i+1次序列化运算后得到的值。

步骤107:根据服务端第2i次序列化运算后得到的值与随机数种子,进行第2i+1次序列化运算,以确定服务端第2i+1次序列化运算后得到的值;其中,所述服务端第2i+1次序列化运算后得到的值用于供服务端对第i+1次访问请求携带的名值对中的名进行校验。

本实施例中,服务端在每次对访问请求中携带的名校验通过后,都会对下一次校验所需要的数据进行计算,方便了对下一次收到的访问请求进行校验,从而使得整个会话过程中通过随机数种子序列化生长演化机制,实现一种高安全性高可靠性高效率的WEB安全访问会话管理。

下面以i=1和i=3分别进行说明:

i=1时,即服务端收到客户端发送的第1次访问请求,在对该第1次访问请求携带的名值对中的名校验通过后,服务端根据服务端第2i-1(1)次序列化运算后得到的值与随机数种子Seed,进行第2i(2)次序列化运算,以确定服务端第2i(2)次序列化运算后得到的值。服务端将服务端第2i(2)次序列化运算后得到的值发送给客户端,以供客户端根据服务端第2i(2)次序列化运算后得到的值和随机数种子Seed,进行第i+1(2)次序列化运算,以确定客户端第i+1(2)次序列化运算后得到的值。服务端接着根据服务端第2i(2)次序列化运算后得到的值与随机数种子,进行第2i+1(3)次序列化运算,以确定服务端第2i+1(3)次序列化运算后得到的值;其中,服务端第2i+1(3)次序列化运算后得到的值用于供服务端对第i+1(2)次访问请求携带的名值对中的名进行校验。

i=3时,即服务端收到客户端发送的第3次访问请求,在对该第3次访问请求携带的名值对中的名校验通过后,服务端根据服务端第2i-1(5)次序列化运算后得到的值与随机数种子Seed,进行第2i(6)次序列化运算,以确定服务端第2i(6)次序列化运算后得到的值。服务端将服务端第2i(6)次序列化运算后得到的值发送给客户端,以供客户端根据服务端第2i(6)次序列化运算后得到的值和随机数种子Seed,进行第i+1(4)次序列化运算,以确定客户端第i+1(4)次序列化运算后得到的值。服务端接着根据服务端第2i(6)次序列化运算后得到的值与随机数种子,进行第2i+1(7)次序列化运算,以确定服务端第2i+1(7)次序列化运算后得到的值;其中,服务端第2i+1(7)次序列化运算后得到的值用于供服务端对第i+1(4)次访问请求携带的名值对中的名进行校验。

在具体实现中,本实施例中的随机数种子序列化运算机制可以应用于WEB应用的安全访问流程,包含但不限于WEB客户端请求合法性验证和WEB会话管理。可选的,随机数种子序列化运算机制还可以应用于WEB应用的数据加密访问传输,包含但不限于WEB客户端和WEB服务端传输的数据加密。

在一个实施例中,客户端发送的访问请求携带的名值对中的值为Session ID,该名值对通过报文头发送至服务端,访问方法所涉及的服务端与客户端之间的交互流程图可以参阅图4,包括:

步骤401:用户通过客户端登录服务端的WEB应用。

步骤402:服务端登录校验成功后,生成当前有效会话的合法标识Session ID,并生成随机数种子Seed,根据名Seed进行第1序列化运算得到S-Session Name0,保存Seed、S-Session Name0和Session ID,将名值对Seed:Session ID返回给客户端。其中,Session ID可以由服务端收到客户端的会话协商请求后生成。需要说明的是,图4中未示出客户端发送协商请求的过程,图4中的请求1、请求2均可以理解为客户端发送会话协商请求与服务端协商好Session ID后,客户端发起的会话合法性校验请求。

其中,S-Session Name0为服务端第1次序列化运算后得到的值。

步骤403:客户端收到名值对Seed:Session ID后,根据名Seed进行第1次序列化运算得到C-Session Name0,保存Seed、C-Session Name0和Session ID。

其中,C-Session Name0为客户端第1次序列化运算后得到的值。

步骤404:客户端发送第1次访问请求时,将名值对C-Session Name0:Session ID携带于请求报文头中,服务端收到第1次访问请求后,校验其中携带的名C-Session Name0与保存的S-Session Name0是否一致(即图中的验证C-Session Name0),若不一致则认为值Session ID非法,拒绝执行请求并关闭会话。其中,图4中的请求1即为第1次访问请求。

步骤405:若步骤404中C-Session Name0校验通过(也可以称为验证通过),则确定值Session ID合法,服务端根据S-Session Name0与Seed,进行第2次序列化运算得到S-Session Name1并返回名值对S-Session Name1:Session ID给客户端。然后服务端根据S-Session Name1与Seed,进行第3次序列化运算得到S-Session Name2,并保存S-SessionName2用来对客户端下一次发送的访问请求中的C-Session Name2校验。

其中,S-Session Name1为服务端第2次序列化运算后得到的值。S-Session Name2为服务端第3次序列化运算后得到的值。

步骤406:客户端收到S-Session Name1,根据S-Session Name1与保存的Seed,进行第2次序列化运算得到C-Session Name2,然后保存C-Session Name2。

其中,C-Session Name2为客户端第2次序列化运算后得到的值。

步骤407:客户端发送第2次访问请求时,将名值对C-Session Name2:Session ID携带于请求报文头中,服务端收到第2次访问请求后,校验其中携带的名C-Session Name2与保存的S-Session Name2是否一致,若不一致则认为值Session ID非法,拒绝执行请求并关闭会话。其中,图4中的请求2即为第2次访问请求。

步骤408、若步骤407中C-Session Name2校验通过,则认为值Session ID合法,服务端根据S-Session Name2与Seed,进行第4次序列化运算得到S-Session Name3并返回名值对S-Session Name3:Session ID给客户端。然后服务端根据S-Session Name3与Seed,进行第5次序列化运算得到S-Session Name4,并保存S-Session Name4用来对客户端下一次发送的访问请求中的C-Session Name4校验。

其中,S-Session Name3为服务端第4次序列化运算后得到的值。S-Session Name4为服务端第5次序列化运算后得到的值。

步骤409、客户端收到S-Session Name3,根据S-Session Name3和Seed进行第3次序列化运算生成C-Session Name4,然后保存C-Session Name4。

其中,C-Session Name4为客户端第3次序列化运算后得到的值。

客户端发送第3次访问请求时,将名值对C-Session Name4:Session ID携带于请求报文头中,服务端收到第3次访问请求后,校验其中携带的名C-Session Name4与保存的S-Session Name4是否一致,若不一致则认为值Session ID非法,拒绝执行请求并关闭会话。若C-Session Name4校验通过,则认为值Session ID合法,服务端根据S-Session Name4与Seed,进行第6次序列化运算得到S-Session Name5并返回名值对S-Session Name5:Session ID给客户端。然后服务端根据S-Session Name5与Seed,进行第7次序列化运算得到S-Session Name6,并保存S-Session Name6用来对客户端下一次发送的访问请求中的名进行校验。

重复上述的Session Name生成和校验流程直到会话结束,会话结束后WEB应用清除保存的Seed、Session Name和Session ID。

本实施例中,降低了报文头传输Session ID极易被拦截伪造的风险,取而代之,报文头传输序列化运算名值对Session Name:Session ID,校验名Session Name来验证值Session ID的合法性,使得Session ID的传输在WEB技术上的应用更加安全可靠,攻击者拦截的任何Session Name,都无法对历史进行溯源对进化进行演进,解决了会话预测、会话劫持、会话固定等WEB应用的安全防护问题。而且无需对过长复杂的值Session ID进行加密传输,只需对相对应的名Session Name结合种子Seed进行序列化运算,通过对传输的名Session Name进行校验,从而判断值Session ID的合法性,尽可能节约系统资源,在最大限度提升会话访问的安全性上兼顾了传输效率的最大保证。

在一个实施例中,客户端发送的访问请求携带的名值对中的值为Session ID,该名值对通过表单参数发送至服务端,访问方法所涉及的服务端与客户端之间的交互流程图可以参阅图5,包括:

步骤501:用户通过客户端登录服务端的WEB应用。

步骤502:服务端登录校验成功后,生成当前有效会话的合法标识Session ID,并生成随机数种子Seed,根据名Seed进行第1序列化运算得到S-Name0,保存Seed、S-Name0和Session ID,将名值对Seed:Session ID通过表单参数返回给客户端。其中,Session ID可以由服务端收到客户端的会话协商请求后生成。需要说明的是,图5中未示出客户端发送协商请求的过程,图5中的请求1、请求2均可以理解为客户端发送会话协商请求与服务端协商好Session ID后,客户端发起的会话合法性校验请求。

其中,S-Name0为服务端第1次序列化运算后得到的值。

步骤503:客户端收到名值对Seed:Session ID后,根据名Seed进行第1次序列化运算得到C-Name0,保存Seed、C-Name0和Session ID。

其中,C-Name0为客户端第1次序列化运算后得到的值。

步骤504:客户端发送第1次访问请求时,将名值对C-Name0:Session ID携带于表单参数中,服务端收到第1次访问请求后,校验其中携带的名C-Name0与保存的S-Name0是否一致,若不一致则认为值Session ID非法,拒绝执行请求并关闭会话。其中,图5中的请求1即为第1次访问请求。

步骤505:若步骤504中C-Name0校验通过,则确定值Session ID合法,服务端根据S-Name0与Seed,进行第2次序列化运算得到S-Name1并返回名值对S-Name1:Session ID给客户端。然后服务端根据S-Name1与Seed,进行第3次序列化运算得到S-Name2,并保存S-Name2用来对客户端下一次发送的访问请求中的C-Name2校验。

其中,S-Name1为服务端第2次序列化运算后得到的值。S-Name2为服务端第3次序列化运算后得到的值。

步骤506:客户端收到S-Name1,根据S-Name1与保存的Seed,进行第2次序列化运算得到C-Name2,然后保存C-Name2。

其中,C-Name2为客户端第2次序列化运算后得到的值。

步骤507:客户端发送第2次访问时,将名值对C-Name2:Session ID携带于表单参数中,服务端收到第2次访问请求后,校验其中携带的名C-Name2与保存的S-Name2是否一致,若不一致则认为值Session ID非法,拒绝执行请求并关闭会话。其中,图5中的请求2即为第2次访问请求。

步骤508、若步骤507中C-Name2校验通过,则认为值Session ID合法,服务端根据S-Name2与Seed,进行第4次序列化运算得到S-Name3并返回名值对S-Name3:Session ID给客户端。然后服务端根据S-Name3与Seed,进行第5次序列化运算得到S-Name4,并保存S-Name4用来对客户端下一次发送的访问请求中的C-Name4校验。

其中,S-Name3为服务端第4次序列化运算后得到的值。S-Name4为服务端第5次序列化运算后得到的值。

步骤509、客户端收到S-Name3,根据S-Name3和Seed进行第3次序列化运算生成C-Name4,然后保存C-Name4。

其中,C-Name4为客户端第3次序列化运算后得到的值。

重复上述的Name生成和校验流程直到会话结束。会话结束后WEB应用清除保存的Seed、Name和Session ID。

本实施例中,将名值对存放在表单参数中进行传输,表单参数的传输支持密文传输,因此,本实施例中除了可以达到对于通讯领域小终端设备,节省了很多系统资源的效果之外,还可以结合参数非对称加解密流程进行密文传输,从而可以有效进行诸如跨站请求伪造(Cross-site request forgery,CSRF)校验、会话伪造校验、会话劫持防护等,避免WEB应用安全校验单一性,通过多重校验WEB会话的合法性,尽可能降低WEB应用访问过程中的安全风险。

在一个实施例中,客户端发送的访问请求携带的名值对中的值为客户端请求配置的参数,该名值对通过表单参数发送至服务端,访问方法所涉及的服务端与客户端之间的交互流程图可以参阅图6,包括:

步骤601:用户通过客户端登录服务端的WEB应用。

步骤602:服务端登录校验成功后,生成随机数种子Seed,根据名Seed进行第1序列化运算得到S-Name0,保存Seed和S-Name0,将Seed返回给客户端。

其中,S-Name0为服务端第1次序列化运算后得到的值。

步骤603:客户端收到Seed后,根据名Seed进行第1次序列化运算得到C-Name0,保存Seed和C-Name0。

其中,C-Name0为客户端第1次序列化运算后得到的值。

步骤604:客户端发送第1次参数配置请求时,将名值对C-Name0:参数携带于表单参数中,服务端收到第1次参数配置请求后,校验其中携带的名C-Name0与保存的S-Name0是否一致,若不一致则认为值参数非法,拒绝执行参数配置请求。其中,图6中的请求1即为第1次参数配置请求,也可以理解为第1次访问请求。

步骤605:若步骤604中C-Name0校验通过,则确定值参数合法,服务端根据S-Name0与Seed,进行第2次序列化运算得到S-Name1并返回名值对S-Name1给客户端。然后服务端根据S-Name1与Seed,进行第3次序列化运算得到S-Name2,并保存S-Name2用来对客户端下一次发送的参数配置请求中的C-Name2校验。

其中,S-Name1为服务端第2次序列化运算后得到的值。S-Name2为服务端第3次序列化运算后得到的值。

步骤606:客户端收到S-Name1,根据S-Name1与保存的Seed,进行第2次序列化运算得到C-Name2,然后保存C-Name2。

其中,C-Name2为客户端第2次序列化运算后得到的值。

步骤607:客户端发送第2次参数配置请求时,将名值对C-Name2:参数携带于表单参数中,服务端收到第2次会话协商请求后,校验其中携带的名C-Name2与保存的S-Name2是否一致,若不一致则认为值参数非法,拒绝执行请求并关闭会话。其中,图6中的请求2即为第2次参数配置请求,也可以理解为第2次访问请求。

步骤608、若步骤607中C-Name2校验通过,则认为值参数合法,服务端根据S-Name2与Seed,进行第4次序列化运算得到S-Name3并返回S-Name3给客户端。然后服务端根据S-Name3与Seed,进行第5次序列化运算得到S-Name4,并保存S-Name4用来对客户端下一次发送的参数配置请求中的C-Name4校验。

其中,S-Name3为服务端第4次序列化运算后得到的值。S-Name4为服务端第5次序列化运算后得到的值。

步骤609、客户端收到S-Name3,根据S-Name3和Seed进行第3次序列化运算生成C-Name4,然后保存C-Name4。

其中,C-Name4为客户端第3次序列化运算后得到的值。

重复上述的Name生成和参数合法性校验流程直到会话结束。会话结束后WEB应用清除保存的Seed和Name。

本实施例中,无需对过长复杂的参数(也可以称为参数值,即名值对中的值)进行加密传输,只需逆向对简单的参数名称(即名值对中的名)进行序列化运算就能达到参数合法性校验及安全传输的目的,对于通讯领域小终端设备,节省了很多系统资源。即,本实施例中将随机数种子序列化运算机制应用到参数合法性校验中,采用简单的参数名称序列化运算替代复杂的参数加密传输,在减少系统资源消耗的同时兼顾了参数传输过程中的安全性,对于通讯领域小终端设备有很大的参考价值。

本申请的一个实施例中涉及一种访问方法,应用于客户端,参阅图7,包括:

步骤701:向服务端发送登录请求,以供服务端对登录请求校验成功后,生成随机数种子。

步骤702:接收服务端发送的随机数种子。

步骤703:向服务端发送访问请求,以供服务端对访问请求中携带的名值对中的名进行校验,并在校验通过后,确定名值对中的值合法;其中,名值对中的名为:客户端根据随机数种子进行序列化运算后得到的值。

由于本实施例与上述应用于服务端的访问方法的实施例相互对应,因此本实施例可与上述应用于服务端的访问方法的实施例互相配合实施。上述应用于服务端的访问方法的实施例中提到的相关技术细节在本实施例中依然有效,在上述应用于服务端的访问方法的实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第二实施例中。

需要说明的是,本申请实施例中的上述各示例均为为方便理解进行的举例说明,并不对本发明的技术方案构成限定。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本申请的一个实施例中涉及一种访问系统,参阅图8,包括:服务端801和客户端802;

客户端802,用于向服务端801发送登录请求。

服务端801,用于对登录请求校验成功后,生成随机数种子,并将随机数种子发送给所述客户端802。

客户端802,还用于向服务端801发送访问请求;其中,访问请求中携带名值对,名值对中的名为:客户端802根据随机数种子进行序列化运算后得到的值。

服务端801,还用于对访问请求中携带的名值对中的名进行校验,并在校验通过后,确定名值对中的值合法。

不难发现,本实施例为与上述方法实施例相对应的系统实施例,本实施例可与上述方法实施例互相配合实施。上述方法实施例提到的相关技术细节和技术效果在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述方法实施例中。

本申请的一个实施例中涉及一种电子设备,参阅图9,包括:至少一个处理器901;以及,与至少一个处理器901通信连接的存储器902;其中,存储器902存储有可被至少一个处理器901执行的指令,指令被至少一个处理器901执行;在电子设备为服务端的情况下,至少一个处理器901能够执行上述应用于服务端的访问方法;在电子设备为客户端的情况下,至少一个处理器901能够执行上述的应用于客户端的访问方法。

其中,存储器902和处理器901采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器901和存储器902的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器901处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器901。

处理器901负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器902可以被用于存储处理器901在执行操作时所使用的数据。

本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

相关技术
  • 信息访问方法、装置、电子设备及计算机可读存储介质
  • 数据访问方法、装置、电子设备及计算机可读存储介质
  • 订单创建系统、方法、电子设备及计算机可读存储介质
  • 并行区块链共识方法、系统、电子设备和计算机可读存储介质
  • 图像呈现方法、系统、电子设备和计算机可读存储介质
  • 访问方法、通信系统、电子设备和计算机可读存储介质
  • 访问控制系统和方法、电子设备以及计算机可读存储介质
技术分类

06120116074775