一种Web通信的防攻击方法、装置及存储介质与流程

文档序号:25991953发布日期:2021-07-23 21:04阅读:121来源:国知局
一种Web通信的防攻击方法、装置及存储介质与流程

本发明实施例涉及网络安全领域,具体涉及一种web通信的防攻击方法、装置及存储介质。



背景技术:

当今大数据时代,数据已经变得越来越重要,网页、微信小程序、应用程序等基于超文本传输协议(hypertexttransferprotocol,简称http)的服务是现今最主流的数据载体,如果这些服务数据的接口没有设置足够的保护措施,目前除了基本的数据安全之外,过于简单的网站通信方式,例如规则的统一资源定位(uniformresourcelocator,简称url)、参数、请求头等,也可能被攻击者利用于进一步的爆破、构造、篡改等攻击。



技术实现要素:

本申请的目的在于克服上述问题或者至少部分地解决或缓减解决上述问题。本发明公开的技术方案可以使web通信过程更安全,避免或减少攻击者的攻击行为。

第一方面,本发明提供了一种web通信的防攻击方法,所述方法包括,

定义一个用于生成伪随机数序列的种子函数,客户端和服务端共用所述种子函数;

设定web通信的随机接口和参数的长度,基于所述种子函数生成的伪随机数序列以及设定的随机接口和参数的长度,客户端和服务端分别构造出n个相同的随机接口和参数;

基于所述n个随机接口和参数分别进行n次web通信,并在每次web通信结束后,所述随机接口和参数、伪随机数失效,在n次web通信结束后,清除种子函数的种子,n为从1开始的自然数。

与现有技术相比,本申请提供的web通信的防攻击方法,定义用于生成伪随机数序列的种子函数,客户端和服务端分别独立构造n个相同的随机接口和参数,将web通信拆分为n个状态,根据生成的n个随机接口和参数进行n次web通信,当第n次web通信完成,所述随机接口和参数、伪随机数失效,这样可以有效防止攻击者阅读、分析和构造web接口和参数;将web通信拆分为多个状态,避免将服务端资源一次性全部返回给客户端;通信接口和参数不包含明显的特征,防止攻击者分析出通信方式,即使一个网站上的通信方式被彻底破解,其他网站再次遇到也不易被分析出来。

第二方面,本发明还提供了一种web通信的防攻击装置,包括,

定义模块,用于定义一个用于生成伪随机数序列的种子函数,客户端和服务端共用所述种子函数;

构造模块,用于设定web通信的随机接口和参数的长度,基于所述种子函数生成的伪随机数序列和设定的随机接口和参数的长度,构造n个随机接口和参数;

通信模块,用于基于所述n个随机接口和参数分别进行n次web通信,并在每次web通信结束后,所述随机接口和参数、伪随机数失效,在n次web通信结束后,清除种子函数的种子,n为从1开始的自然数。

与现有技术相比,本发明公开的一种web通信的防攻击装置的有益效果与上述任一项技术方案公开一种web通信的防攻击方法的有益效果相同,在此不再赘述。

第三方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如权利要求上述技术方案中所述的一种web通信的防攻击方法。

与现有技术相比,本发明公开的存储介质的有益效果与上述任一项技术方案公开一种web通信的防攻击方法的有益效果相同,在此不再赘述。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分,本领域技术人员应该理解的是,这些附图未必是按比例绘制的,在附图中:

图1为本发明一个实施例中公开的一种web通信的防攻击方法流程示意图;

图2为本发明一个实施例中公开的一种web通信的防攻击方法流程示意图;

图3为本发明一个实施例中公开的整个web通信过程中的请求过程示意图;

图4为本发明一个实施例中公开的一种web通信的防攻击装置结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本申请提供的web通信的防攻击方法,在客户端和服务端之间约定接口的校验方式,客户端实现对应加密、构造信息的算法,服务端实现对应的数据校验算法,只有客户端发送的数据通过校验,服务端才正常返回接口的数据。在这个过程中,涉及的对象有url、url参数、http请求头等。

如图1所示,本发明实施例中提供的一种web通信的防攻击方法,所述方法包括,

步骤s01,定义一个用于生成伪随机数序列的种子函数,客户端和服务端共用所述种子函数;

在本发明实施例中,定义一个足够复杂的种子函数,如f(x):

a_1=f(x)

a_2=f(x,a1)

...

a_n=f(x,a_1,a_2...,a_(n-1))

在种子函数中输入一个自变量x,就能生成一个无限的伪随机数序列{a_n}={a_1,a_2,a_3,...},x被称为“种子”,a_n下文称“伪随机数”,f(x)为“种子函数”。

在本发明实施例中,种子函数通过平方取中法和线性同余法实现:

1、平方取中法

初始值为x,mod10000得4位数;

平方得8位数,不足时前面补0;

取中间4位数得下一个4位随机数;

2、线性同余法

a_(n+1)=(a*a_n+b)modc,a、b、c为常数;

为了满足后续使用的需求,本发明实施例中期望输入的种子>10位,以防止重复,也就是说函数的值域应该覆盖这个位数的数字。

在本发明实施例中,种子函数分别嵌在客户端向服务端请求的源程序代码和服务端源程序代码中。

客户端执行所述服务端返回到客户端的源程序代码,实现所述客户端和服务端共用所述种子函数,也就是说,可以实现服务端和客户端事先约定好种子函数。

步骤s02,设定web通信的随机接口和参数的长度,基于所述种子函数生成的伪随机数序列和设定的随机接口和参数的长度,客户端和服务端分别构造出n个相同的随机接口和参数;

步骤s02具体包括:取用所述种子函数生成的伪随机数直到达到所述设定的随机接口和参数长度,客户端和服务端分别构造出n个相同的随机接口和参数。

在本发明实施例中,使用伪随机数序列构造随机接口和参数,当通过上述种子函数获得了伪随机数序列后,就可以用这个方式构造随机接口。例如:

url为/a_1

url为/a_1,http请求头etag为[a_2]-[a_3]

“[xx]”表示用伪随机数序列任意方式编码成的字符串,例如将123编码为abc,编码成字符串会更没有特征,也能一定程度压缩字符长度。

url为/[a_1].png,http请求头etag为[a_2]-[a_3]

加上.png后缀会更像一个普通的数据请求。

为了结果足够随机、不重复也不和其他网站上的资源接口冲突,构造的随机接口url和参数需要足够长(>10位)。如果一次输出的随机数不够长,可以依次取用种子随机数,直到足够长为止,例如一次性使用a_1a_2a_3来构造一个url。

如图2所示,在步骤s02之后还包括,步骤s021,对客户端和服务端分别构造出n个相同的随机接口和参数进行加密。

请求构造方法上文已经举例。假设生成的伪随机数是4位数,不妨用:

1、第一个通信

url为/[a_1a_2]/[a_3a_4a_5a_6].png;

使用[a_7a_8a_9a_10]来进行数据加密算法des(dataencryptionalgorithm,缩写des)加密;

使用[a_11a_12]进行密钥相关的哈希运算消息认证码算法hmac(hash-basedmessageauthenticationcode,缩写hmac)防篡改。

2、第二个通信

url为/[a_13a_14]/[a_15a_16a_17a_18].png

......

等等

“[xx]”表示编码成字符串,例如010203编码为abc。这样依次取随机数,构造多个随机接口。

如图3所示,在步骤s021之后,还包括,步骤s0211,在经加密后客户端和服务端的n个随机接口和参数后增加图片格式标志。

在本发明实施例中,图片格式标志为后缀为png,这里是指将这个请求伪装成一个网站上普通的图片资源请求,这样更符合我们对这种通信加密方式的隐蔽性需求。

步骤s03,基于所述n个随机接口和参数分别进行n次web通信,具体来说,所述客户端向所述服务端发起第n个随机接口的请求,所述服务端检验所述客户端的请求是否合法,当检验合法,所述服务端向所述客户端返回第n个通信数据,并在每次web通信结束后,所述随机接口和参数、伪随机数失效,在n次web通信结束后,清除种子函数的种子,n为从1开始的自然数。

传输数据时,可以使用伪随机数基于高级加密标准aes(advancedencryptionstandard,简称aes)、des和rsa(ronrivest、adishamir、leonardadleman三人提出的算法,简称rsa)等对称或非对称加密技术和hmac等防篡改技术对通信数据进行处理。也可以使用伪随机数多次传输数据,需要事先约定客户端和服务端各个用途的使用顺序,依次取用随机数即可。

例如实现约定客户端和服务端各个用途使用顺序,例如:

第一次传输数据,首先连续取用3个伪随机数,用特定方式构造随机接口和参数,然后连续取用2个伪随机数加密通信数据。

第二次传输数据,在第一次传输数据的基础上,继续取用3个伪随机数构造接口和参数,然后用2个种子随机数加密通信数据。

……等等

注意这个过程中,只要服务端和客户端互相同步好种子,他们就能互相独立地、依次地确定后续每一次通信的接口形式和校验方式。

如图3所示,在本发明实施例中,基于上述方法,设计一种“种子随机请求算法”,来描述整个通信过程中的请求形式,具体如下:

1.服务端和客户端事先约定好种子函数;

2.客户端发起请求,通信开始;

3.服务端可以先初步检查一下客户端的环境是否符合期望、要求客户端认证、要求客户端加载依赖库等,检查通过才能进行下一步;

4.服务端生成种子;

a.种子是一次性、不易重复的随机数即可,可以使用时间戳,也可以使用其他随机数生成方法;

5.服务端向客户端返回种子,即两者同步好种子;

a.同步种子和之前的初步检查,通信内容都应该加密并防篡改。可以直接使用aes、des、hmac等加密技术,也可以再用一个种子随机数构造的随机请求和加密,甚至多种复合加密;

6.开始带状态的通信:

a.---第一个通信---

b.服务端使用种子、约定好的种子函数、约定好的接口构造方式构造第一个随机接口,监听该随机接口;

c.客户端通过种子、约定好的种子函数、约定好的接口构造方式构造第一个通信对应的随机接口,然后使用同步到的种子、约定好的通信加密方法,向该随机接口发送第一个通信数据;

d.服务端监听的该随机接口收到通信数据,根据种子、约定好的通信加密方法,校验该请求数据。若合法,返回该第一个通信对应的通信数据;

e.服务端停止监听第一个随机接口,随机接口失效

f.---第二个通信---

g.服务端使用种子、约定好的种子函数、约定好的接口构造方式(此处会在第一个通信结束的基础上继续取用种子随机数,下同)构造第二个随机接口,监听该随机接口

h.客户端通过、种子、约定好的种子函数、约定好的接口构造方式、构造第二个通信对应的所及接口,然后使用同步到的种子、约定好的通信加密方法,向该随机接口发送第二个通信的通信数据;

i.服务端监听的该随机接口收到通信数据,根据种子、约定好的通信加密方法,校验该请求数据。若合法,返回该第二个通信数据;

j.服务端停止监听第二个随机接口,所及接口失效;

k.……

l.---第n个通信---

m.……

n.服务端停止监听第n个随机接口,随机接口失效;

7.通信结束,服务端将存储的该种子清除,种子失效;

与现有技术相比,本申请使用种子随机请求算法同步客户端和服务端的状态,以达到请求随机、数据防泄漏、数据防篡改的目的,本发明实施例实现了一种web通信的反分析、反构造、放重放、防篡改方法,并且有以下特点:

1.网站资源的接口路径、参数不能从客户端被直接猜测,防止扫描、猜测、分析;

2.通信过程可以拆分为多次通信,要求客户端必须依次、合法地完成每次通信,才能获取下一步的资源,不能跳过状态获取直接资源。使得环境检查、授权检查等重要步骤不能被跳过;

3.每次请求的路径和参数都是一次性的,无法抓包重放;

4.不额外进行太多通信(只需要同步好种子就可以),避免占用过多的网络资源

5.种子可以多个拼接,方便调整,可靠性强。种子依次取用,用后失效,占用的cpu、内存资源少

本申请实施例,最终能实现保护重要资源、防止伪造篡改请求数据,增加客户端异常操作的自动化成本的目的。进而增加恶意攻击者扫描、分析、爬取、攻击等的成本。

第二个方面,如图4所示,本发明实施例还提供了一种web通信的防攻击装置,包括,

定义模块41,用于定义一个用于生成伪随机数序列的种子函数,客户端和服务端共用所述种子函数;

构造模块42,用于设定web通信的随机接口和参数的长度,基于所述种子函数生成的伪随机数序列和设定的随机接口和参数的长度,构造n个随机接口和参数;

通信模块43,用于基于所述n个随机接口和参数分别进行n次web通信,并在每次web通信结束后,所述随机接口和参数、伪随机数失效,在n次web通信结束后,清除种子函数的种子,n为从1开始的自然数。

本发明公开的一种web通信的防攻击装置的有益效果与上述任一项技术方案公开一种web通信的防攻击方法的有益效果相同,且一种web通信的防攻击装置执行防攻击方法的过程如上述所述,在此不再赘述。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上述所述的一种web通信的防攻击方法。

存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。

其中,非易失性存储器可以是只读存储器(read-onlymemory,简称rom)、可编程只读存储器(programmablerom,简称prom)、可擦除可编程只读存储器(erasableprom,简称eprom)、电可擦除可编程只读存储器(electricallyeprom,简称eeprom)或闪存。

易失性存储器可以是随机存取存储器(randomaccessmemory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,简称sram)、动态随机存取存储器(dynamicram,简称dram)、同步动态随机存取存储器(synchronousdram,简称sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,简称esdram)、同步连接动态随机存取存储器(synchlinkdram,简称sldram)和直接内存总线随机存取存储器(directrambusram,简称drram)。

本申请实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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