在小程序后台防止DDoS攻击的方法、设备和介质与流程

文档序号:30349279发布日期:2022-06-08 10:29阅读:699来源:国知局
在小程序后台防止DDoS攻击的方法、设备和介质与流程
在小程序后台防止ddos攻击的方法、设备和介质
技术领域
1.本公开总体上涉及互联网技术领域,更具体地涉及网络安全领域,尤其涉及在小程序后台防止ddos攻击的方法、设备和介质。


背景技术:

2.分布式拒绝服务攻击(简称ddos)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。目前,针对 ddos攻击的防御手段主要是:增加带宽和进行流量清洗。流量清洗技术主要是从全部的网络流量中区分出正常的流量和恶意的流量,将恶意流量阻断和丢弃,而只将正常的流量回源给源服务器。
3.小程序是一种不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开。小程序也体现了“用完即走”的理念。小程序能够实现消息通知、线下扫码、公众号关联等七大功能。例如,在象微信、支付宝之类的app中已经开发了大量的小程序,诸如滴滴单车、麦当劳等等。随着小程序的爆发式发展,小程序相关技术也在不断更新。同时,黑客针对小程序的攻击行为也在增加。
4.在现有的应用层ddos攻击防御技术中,一种是通过分析访问消息的攻击特征值,提取攻击特征来判断是否为攻击访问。例如,现有技术中存在一种基于多特征熵的应用层ddos攻击检测与防御方法。其主要是通过访问的特征熵进行用户行为分析,从而对异常方法进行识别。该方法攻击特征很难识别,容易出现误判和漏判。而且需要前期提取大量正常访问用户特征进行分析,工作量很大。
5.另一种目前常用的方法是在用户访问时校验用户身份,为其分配身份凭证(例如,cookie),之后的访问以该凭证为白名单进行校验,从而对非白名单访问进行拦截。例如,现有技术中存在一种基于多重特征识别的应用层ddos攻击防御系统。该方法就是通过识别用户身份后,为其分配cookie,之后的访问通过cookie白名单进行拦截。但用户在首次访问时,没有服务器分配的身份凭证,很难判断其真实性,黑客可以冒充首次访问进行攻击。例如,现有技术中还存在一种应用层智能抵御ddos攻击的方法及系统。该方法提到使用用户ip和uid 作为白名单进行识别,但并没有说明uid如何获取。
6.因此,现有技术中存在对于能够基于小程序自身属性来防止对小程序后台的应用层ddos攻击的技术的需求。


技术实现要素:

7.在下文中给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
8.本文公开了一种用于小程序后台的、通过使用小程序所在app系统生成的3rd_
session作为身份凭证进行白名单过滤来防止应用层 ddos攻击的方法。3rd_session为app平台为用户生成的唯一标识,且有失效时间控制,可以准确识别用户身份。
9.相比传统应用层ddos攻击防御技术,本发明使用特征值为app 平台提供,保证了其有效性。同时,小程序前端每次访问都可以从app 平台获取该值,不需要小程序后台再对用户身份进行校验,保证了白名单校验的访问全覆盖。避免首次范围无白名单校验,需要后台验证用户身份的情况。
10.根据本公开的一个方面,提供一种在小程序后台防止ddos攻击的方法,包括:接收由用户经由小程序前端发送的业务请求,所述业务请求包括用于所述小程序前端和所述小程序后台之间的交互的校验参数3rd_session;将所述3rd_session与所述小程序后台的针对所述业务请求的业务接口标识符functionid组合作为关键词查询所述小程序后台维护的数据库以确定在所述数据库中是否存在匹配;如果确定在所述数据库中存在匹配,则确定所述业务请求的接收时间是否在数据库中与所述匹配相关的有效期内;如果确定所述接收时间在所述有效期内,则确定所述数据库中与所述匹配相关联的计数值是否超过预设阈值;以及如果确定所述数据库中与所述匹配相关联的计数值没有超过所述预设阈值,则将所述计数值递增1并完成所述业务请求。
11.根据本公开的另一个方面,提供一种在小程序后台防止ddos攻击的装置,包括:存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存储器上的指令,以执行根据本公开的上述方面所述的用于在小程序后台防止ddos攻击的方法。
12.根据本公开的又一个方面,提供一种计算机可读存储介质,其包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行根据本公开的上述方面所述的用于在小程序后台防止ddos攻击的方法。
附图说明
13.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
14.参照附图,根据下面的详细描述,可以更清楚地理解本公开,其中:
15.图1示出了根据本公开一个实施例的用于在小程序后台防止 ddos攻击的处理的流程图;
16.图2示出了根据本公开一个实施例的防止ddos攻击的系统处理流示意图;
17.图3示出了可以实现根据本公开一个实施例的计算设备的示例性配置。
具体实施方式
18.参考附图进行以下详细描述,并且提供以下详细描述以帮助全面理解本公开的各种示例实施例。以下描述包括各种细节以帮助理解,但是这些细节仅被认为是示例,而不是为了限制本公开,本公开是由随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语仅用于能够清楚一致地理解本公开。另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。
19.本发明人注意到随着技术的发展基于应用层的ddos攻击不断增多。相比传统的网
络层ddos攻击,应用层ddos攻击抓包后模拟合法请求向目标服务器发起的攻击很难防御。目前现有的应用层ddos攻击防御技术,通过分析访问消息的攻击特征值,提取攻击特征来判断是否为攻击访问。或者在用户访问时校验用户身份,为其分配身份凭证(例如,cookie),之后的访问以该凭证为白名单进行校验,从而对非白名单访问进行拦截。上述两种方法,其一攻击特征很难识别,容易出现误判和漏判,其二用户在首次访问时,没有服务器分配的身份凭证,很难判断其真实性,黑客可以冒充首次访问进行攻击。因此,本发明人认识到现有技术中需要一种有效的、可靠的身份凭证作为用户访问的白名单特征值,进行攻击的识别和拦截。
20.本发明人了解小程序的运行机制,知道小程序运行在app中,并且必须登录才可以使用。小程序前端在请求小程序后台时,就可以保证每次请求都可以传回用户登录凭证3rd_session。由于该登录凭证 3rd_session是基于小程序所在app平台的,因此将3rd_session用作身份凭证可以保证其有效性和可靠性。
21.因此,本发明人提出了一种用于小程序后台的、通过将小程序所在app系统生成的3rd_session用作为身份凭证进行白名单过滤来防止应用层ddos攻击的技术方案。
22.图1示出了根据本公开一个实施例的用于在小程序后台防止 ddos攻击的处理1000的流程图。值得注意的是,以下描述包括了大量的不必要的细节,本领域技术人员可以根据需要对这些细节进行取舍。
23.处理在步骤1001处开始,在该步骤处接收由用户经由小程序前端发送的业务请求。所述业务请求包括用于所述小程序前端和所述小程序后台之间的交互的校验参数3rd_session。
24.在所述用户首次登录所述小程序前端时,所述小程序后台为所述用户生成所述3rd_session,并将所述3rd_session与所述用户的唯一标识openid和会话密钥session_key相关联地存储在数据库中。 session_key是app生成的针对用户数据加密签名的密钥,其不被传输到小程序前端。
25.在步骤1002处,将所述3rd_session与所述小程序后台的针对所述业务请求的业务接口标识符functionid组合作为关键词。
26.在步骤1003处,使用所述关键词查询所述小程序后台维护的数据库以确定在所述数据库中是否存在匹配,并且确定所述业务请求的接收时间是否在数据库中与所述匹配相关的有效期内。
27.如果确定在所述数据库中存在匹配并且确定所述接收时间在所述有效期内,则处理1000前进到步骤1004。在步骤1004处,确定所述数据库中与所述匹配相关联的计数值是否超过预设阈值。
28.如果在步骤1004处确定所述数据库中与所述匹配相关联的计数值没有超过所述预设阈值,则处理1000前进到步骤1005。在步骤1005 处,则将所述计数值递增1,然后前进到步骤1006。如果在步骤1004 处确定所述数据库中与所述匹配相关联的计数值超过所述预设阈值,则处理1000前进到步骤1007。
29.在步骤1006处,完成所述业务请求。也就是,小程序前端可以正常访问小程序后台。
30.如果在步骤1003处确定在所述数据库中不存在匹配或者如果确定所述接收时间
不在所述有效期内,则处理1000前进到步骤1008。在步骤1008处,确定所述3rd_session是否在所述数据库中存在匹配。
31.如果在步骤1008处确定所述3rd_session在所述数据库中存在匹配,则处理1000前进到步骤1009。在步骤1009处,则所述小程序后台在所述数据库中为所述关键词创建条目,在所述条目中为所述关键词设置并存储有效期和为1的计数值。所述数据库可以是redis数据结构形式的白名单,并且所述计数值可以是redis数据结构形式的值。
32.当小程序后台获取3rd_session后,会保存在白名单redis库中,这里以3rd_session作为key值,以session_key+openid最为value进行保存。通过redis高性能的特性,可以快速校验3rd_session值是否在白名单中,并可以快速获得本次访问的session_key和用户openid。
33.关键词值3rd_sessionsession_key+openid
34.进一步的,当小程序前端发起业务请求时,会在请求报文中传回3rd_session,小程序后台会创建用于访问计数的redis库,保存同一前端用户,在一定时间内,访问同一接口的次数。在redis库中,用 3rd_session标识用户,functionid标识接口,数据项的有效期标识计数间隔。该redis库的key值为3rd_session+functionid,value值为访问次数,并设置一个有效期,作为计数间隔。
35.关键词值3rd_session+functionid访问次数
36.如果在步骤1008处确定所述3rd_session在所述数据库中不存在匹配,则处理1000前进到步骤1007。
37.在步骤1007处,所述小程序后台将所述业务请求识别为ddos攻击。在此情况下,小程序后台可以拦截所述业务请求和/或给出出错警报。
38.虽然在附图中以特定次序描绘了操作,但是这不应该被理解为要求以所示的特定次序或者以顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。
39.图2示出了根据本公开一个实施例的防止ddos攻击的系统处理流示意图。在如图2所示的整个ddos防御系统中,主要涉及以下子系统:
40.小程序前端,运行在app中,主要完成前端功能逻辑,调用后台服务,并和app进行数据交互。在发起后台业务请求时,请求参数中回传前端保存的用户3rd_session信息。
41.小程序所在app平台服务器,app平台提供的服务,用于获取用户 openid、session_key等信息。
42.小程序防攻击服务,提供防ddos攻击的校验逻辑,用于校验访问中3rd_session的合法性,和异常访问的拦截,并可以调整校验策略,如访问次数阈值设定,检查时间间隔设定。
43.小程序业务后台,为小程序前端提供小程序相关业务服务,并和 app平台服务器进行数据交互获取相关数据。
44.redis服务(用于3rd_session白名单),用于保存有效的3rd_session,以及对应的openid、session_key。
45.redis服务(用于访问计数器),用于保存用户访问次数,和控制检查时间间隔。
46.虽然图2中示出了分别用于3rd_session白名单和访问计数器的 redis服务,但是本领域技术人员应当知道这二者可以由同一个数据库存储,该数据库可以位于云中或计算设备中。
47.本技术方案适用于小程序后台服务。由于小程序所在的app必须登录才可以使用,因此用户在使用小程序时,一定可以获取用户的身份信息。app平台定义了小程序用户的唯一标示字段openid,同时提供了一套基于openid、session_key、3rd_session进行签名加密的校验机制。其中,3rd_session作为小程序前端和后台数据交互时校验参数,在接口调用时,通过请求消息传入小程序后台。关于小程序用户登录流程在下文中参考图2进行进一步描述。
48.当小程序后台获取3rd_session后,会保存在白名单redis库中,这里以3rd_session作为key值,以session_key+openid最为value进行保存,数据结构参见图2。通过redis高性能的特性,可以快速校验 3rd_session值是否在白名单中,并可以快速获得本次访问的 session_key和用户openid。
49.进一步的,当小程序前端发起业务请求时,会在请求消息中传回 3rd_session,小程序后台会创建用于访问计数的redis库,保存同一前端用户,在一定时间内,访问同一接口的次数。在redis库中,用 3rd_session标识用户,functionid标识接口,数据项的有效期标识计数间隔。该redis库的key值为3rd_session+functionid,value值为访问次数,并设置一个有效期,作为计数间隔,数据结构参见图2。
50.进一步的,在校验访问合法性时,我们的校验逻辑如下:首先,查询计数器redis是否存在3rd_session+functionid的key值,并且是否在有效期内。如果校验通过,则检查该key的value值(即访问次数) 是否超限。如果不超限,则该key的value值+1,即计数器加一,并判定该访问为正常访问而非ddos攻击,允许访问业务服务。如果超限,则视作非法访问,疑似ddos攻击,拦截访问,直接返回报错。
51.进一步的,如果计数器redis不存在该key值,或已经超过有效期,则视作该用户新的周期内首次访问该接口服务。这时检查白名单redis 中是否存在该3rd_session,如果在白名单中,则计数器redis中增加一条新的记录,其key值为3rd_session+functionid,并设置value初始值为1,即访问次数为一,同时,设置失效时间为一个间隔周期。并判断该访问为正常访问,非ddos攻击,允许访问业务服务。如果该 3rd_session不在白名单中,则视作非法访问,疑似ddos攻击,拦截访问,直接返回报错。整体校验访问合法性,即检查ddos攻击的算法逻辑图见图2。
52.以下参考图2,对各个步骤进行说明。
53.1、从小程序前端向app平台服务器使用wx.login()获取登录凭证 code();
54.2、从小程序前端向小程序后台使用wx.request()发送code();
55.2.1、从小程序后台向app平台服务器调用登录凭证校验接口(),并且app平台服务器向小程序后台返回openid+session_key;
56.2.2、小程序后台生成3rd_session();
57.2.3、小程序后台向redis服务发送并在redis白名单中写入 3rd_session为key,其值为session_key+openid;并且小程序后台向小程序前端返回3rd_session
58.3、小程序前端缓存3rd_session();
59.4、小程序前端向小程序防攻击服务发起携带3rd_session()的业务请求;
60.4.1、小程序防攻击服务向redis服务校验key(其值为 3rd_session+functionid)是否存在并在有效期内();
61.4.2、如果校验成功,小程序防攻击服务向redis服务校验该key的值(访问次数)是否超限();
62.4.3、如果校验成功,小程序防攻击服务指令redis服务将该key的值(访问次数)+1();
63.5、同时,小程序防攻击服务向小程序后台进行正常访问();
64.4.4、如果校验失败(即,访问次数超限),小程序防攻击服务对业务请求进行拦截,直接返回报错();
65.4.5、如果校验失败(即,不存在3rd_session+functionid或超出有效期),小程序防攻击服务向redis服务查询key值3rd_session是否在 redis白名单中();
66.4.6、如果校验成功(即,在白名单中),小程序防攻击服务向redis 服务指示计数器redis增加,将3rd_session+functionid作为key关键字的项,并且其值初始为1,并且设置失效时间();
67.4.7、同时,小程序防攻击服务向小程序后台进行正常访问();
68.4.8、如果3rd_session不在白名单中,小程序防攻击服务直接返回报错()。
69.在以上描述中用“()”表示接口函数,供相应组件调用。
70.本发明利用小程序所在app平台生成的用户登录凭证3rd_session 为访问特征白名单进行识别。相对于现有技术,本发明具有以下优点中的一个或多个:
71.1.用户登录凭证为小程序所在app平台生成,app平台已经对用户的身份进行校验,小程序后台可以完全信任该凭证,不需要自身后台在进行校验。
72.2.用户只有在app平台登录后才可以使用小程序,每次小程序前后台交互都可以以该登录凭证进行校验。不会出现用户首次访问没有校验凭证的情况。
73.图3示出了能够实现根据本公开的实施例的计算设备1200的示例性配置。
74.计算设备1200是能够应用本公开的上述方面的硬件设备的实例。计算设备1200可以是被配置为执行处理和/或计算的任何机器。计算设备1200可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(pda)、智能电话、车载计算机或以上组合。
75.如图3所示,计算设备1200可以包括可以经由一个或多个接口与总线1202连接或通信的一个或多个元件。总线2102可以包括但不限于,工业标准架构(industry standard architecture,isa)总线、微通道架构(micro channel architecture,mca)总线、增强isa(eisa) 总线、视频电子标准协会(vesa)局部总线、以及外设组件互连(pci)总线等。计算设备1200可以包括例如一个或多个处理器1204、一个或多个输入设备1206以及一个或多个输出设备1208。一个或多个处理器1204可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。处理器1202例如可以被配置为实现用于在小程序后台防止ddos攻击的处理1000。输入设备1206可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程
控制器。输出设备1208可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
76.计算设备1200还可以包括或被连接至非暂态存储设备1214,该非暂态存储设备1214可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。计算设备1200 还可以包括随机存取存储器(ram)1210和只读存储器(rom)1212。 rom 1212可以以非易失性方式存储待执行的程序、实用程序或进程。 ram 1210可提供易失性数据存储,并存储与计算设备1200的操作相关的指令。计算设备1200还可包括耦接至数据链路1218的网络/总线接口1216。网络/总线接口1216可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙
tm
设备、802.11设备、wifi设备、wimax设备、蜂窝通信设施等)。
77.本公开包括软件、应用程序、计算机程序或算法的使用。可以将软件、应用程序、计算机程序或算法存储在非瞬时性计算机可读介质上,以使诸如一个或多个处理器的计算机执行上述步骤和附图中描述的步骤。例如,一个或多个存储器以可执行指令存储软件或算法,并且一个或多个处理器可以关联执行该软件或算法的一组指令,以根据本公开中描述的实施例提供各种功能。
78.软件和计算机程序(也可以称为程序、软件应用程序、应用程序、组件或代码)包括用于可编程处理器的机器指令,并且可以以高级过程性语言、面向对象编程语言、功能性编程语言、逻辑编程语言或汇编语言或机器语言来实现。术语“计算机可读介质”是指用于向可编程数据处理器提供机器指令或数据的任何计算机程序产品、装置或设备,例如磁盘、光盘、固态存储设备、存储器和可编程逻辑设备(pld),包括将机器指令作为计算机可读信号来接收的计算机可读介质。
79.举例来说,计算机可读介质可以包括动态随机存取存储器 (dram)、随机存取存储器(ram)、只读存储器(rom)、电可擦只读存储器(eeprom)、紧凑盘只读存储器(cd-rom)或其他光盘存储设备、磁盘存储设备或其他磁性存储设备,或可以用于以指令或数据结构的形式携带或存储所需的计算机可读程序代码以及能够被通用或专用计算机或通用或专用处理器访问的任何其它介质。如本文中所使用的,磁盘或盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘 (dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式复制数据,而盘则通过激光以光学方式复制数据。上述的组合也包括在计算机可读介质的范围内。
80.提供本公开的主题作为用于执行本公开中描述的特征的装置、系统、方法和程序的示例。但是,除了上述特征之外,还可以预期其他特征或变型。可以预期的是,可以用可能代替任何上述实现的技术的任何新出现的技术来完成本公开的部件和功能的实现。
81.另外,以上描述提供了示例,而不限制权利要求中阐述的范围、适用性或配置。在不脱离本公开的精神和范围的情况下,可以对所讨论的元件的功能和布置进行改变。各种实施例可以适当地省略、替代或添加各种过程或部件。例如,关于某些实施例描述的特征可以在其他实施例中被结合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1