CN112367304A - 请求限制方法、装置、计算机设备和存储介质 - Google Patents
请求限制方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112367304A CN112367304A CN202011137084.5A CN202011137084A CN112367304A CN 112367304 A CN112367304 A CN 112367304A CN 202011137084 A CN202011137084 A CN 202011137084A CN 112367304 A CN112367304 A CN 112367304A
- Authority
- CN
- China
- Prior art keywords
- type
- configuration
- time threshold
- request
- acquiring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种请求限制方法、装置、计算机设备和存储介质。该方法通过拦截使用特定注解的目标方法,读取特定注解的配置,判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。采用本方法能够增加了访问限制方案对HTTP和RPC协议的兼容性,提高了访问限制的部署效率。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种请求限制方法、装置、计算机设备和存储介质。
背景技术
为了在应用上对某些验证接口上防止暴力破解,或者降低数据的压力就需要用到请求的访问限制。例如发送验证码、用户登录、注册等场景。访问限制的技术实现是与业务无关的,但是很多开发场景下都需要对访问限制进行相关实现。然而,目前的访问限制实现方式无法兼容各种应用场景,针对不同场景需要重新对访问限制进行实现。
针对相关技术中,访问限制方案兼容性差的问题,目前尚未提出有效的解决方案。
发明内容
基于此,有必要针对上述技术问题,提供一种请求限制方法、装置、计算机设备和存储介质。
第一方面,本申请实施例提供了一种请求限制方法,包括以下步骤:
拦截使用特定注解的目标方法,读取所述特定注解的配置;
判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取与所述主体标识对应的时间阈值和次数阈值,其中,所述类型包括HTTP类型和RPC类型;
在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
在其中一个实施例中,所述判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取与所述主体标识对应的时间阈值和次数阈值包括:
判断所述配置的类型,在所述类型为HTTP类型的情况下,获取所述请求者的IP地址,根据所述配置获取到与所述IP地址对应的时间阈值和次数阈值;
在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
在其中一个实施例中,在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值包括:
在所述类型为RPC类型的情况下,获取所述配置中的参数值;
解析拦截到的所述目标方法,获取所述目标方法中参数的注解值;
在所述参数值与所述注解值相同的情况下,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
在其中一个实施例中,获取所述目标方法中参数的注解值之后,所述方法还包括:
在所述参数值与所述注解值不相同的情况下,遍历所述目标方法中参数的注解值。
在其中一个实施例中,所述在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求包括:
通过自定义Map以键值结构存储所述主体标识和所述请求次数,所述键值结构中的键对应所述主体标识,所述键值结构中的值对应所述请求次数;
在与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
在其中一个实施例中,所述方法还包括:通过定时器,每隔所述时间阈值对所述自定义Map中存储的所述请求次数进行清零。
第二方面,本申请实施例还提供一种请求限制装置,所述装置包括拦截模块、获取模块和限制模块:
所述拦截模块用于拦截使用特定注解的目标方法,读取所述特定注解的配置;
所述获取模块用于判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取到与所述主体标识对应的时间阈值和次数阈值,其中,所述类型包括HTTP类型和RPC类型;
所述限制模块用于在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
在其中一个实施例中,所述装置还包括判断模块:
所述判断模块用于判断所述配置的类型,在所述类型为HTTP类型的情况下,获取所述请求者的IP地址,根据所述配置获取到与所述IP地址对应的时间阈值和次数阈值;在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述请求限制方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述请求限制方法。
上述请求限制方法、装置、计算机设备和存储介质,通过拦截使用特定注解的目标方法,读取该特定注解的配置,判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。增加了访问限制方案对HTTP和RPC协议的兼容性,提高了访问限制的部署效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本发明实施例的请求限制方法的服务器的硬件结构框图;
图2是根据本发明实施例的请求限制方法的流程图;
图3是根据本发明实施例的请求限制方法中判断配置类型的流程图;
图4是根据本发明优选实施例的请求限制方法的示意图;
图5是根据本发明实施例的请求限制装置的示意图;
图6是根据本发明实施例的请求限制计算机设备的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图1是根据本发明实施例的请求限制方法的服务器的硬件结构框图。如图1所示,服务器可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,服务器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的请求限制方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在一个实施例中,图2是根据本发明实施例中请求限制方法的流程图,如图2所示,提供了一种请求限制方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S210,拦截使用特定注解的目标方法,读取特定注解的配置。上述特定的注解可以是预设的需要进行限制的方法注解,例如requestlimits注解,requestlimits注解作用于方法(method)上,用于拦截需要限制的接口。可选地,上述拦截过程基于Spring AOP技术,将注解注释的方法进行拦截处理。在一些实施例中,通过配置拦截器RequestAspect类,通过拦截器拦截到了使用特定requestlimits注解的方法。
步骤S220,判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取与主体标识对应的时间阈值和次数阈值。其中,配置的类型包括HTTP类型和RPC类型。本步骤对于拦截到的用户即目标方法的请求者进行两种配置类型的区分。一种是在配置的类型为HTTP类型的情况下,基于用户请求,也就是请求者的IP作为主体标识,在单位时间内进行限制请求次数。另外一种是RPC类型,主体标识可以由开发者自定义。在一些实施例中,通过请求者手机号或者是用户id作为主体标识,在单位时间内限制该手机号或者是id的请求次数。例如,在用户用手机号注册账户时,便可以配置用户手机作为标识,拦截某个手机号在单位时间内的请求次数。获取目标方法的requestlimits注解的配置,可以获取到与该主体标识对应的请求限制的时间阈值和次数阈值。时间阈值通常是一个时间间隔,例如60秒、三分钟。次数阈值则是在上述时间间隔中的最高请求次数。
步骤S230,在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。获取在时间阈值内,与特定注解的配置中设定的主题标识对应的请求次数,在请求次数大于次数阈值的情况下,限制请求者的请求。在一些实施例中,限制请求的同时,通过抛出异常,在请求者的交互界面上进行请求频繁,稍后再试的提示。
步骤S210至步骤S230中,通过拦截使用特定注解的目标方法,读取该特定注解的配置,判断配置的类型,根据类型获取目标方法的执行主体的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。增加了访问限制方案对HTTP和RPC协议的兼容性,提高了访问限制的部署效率。
在一个实施例中,图3是根据本发明实施例的请求限制方法中判断配置类型的流程图,如图3所示,请求限制方法判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取与主体标识对应的时间阈值和次数阈值包括:
步骤S310,判断配置的类型,在类型为HTTP类型的情况下,获取请求者的IP地址,根据配置获取到与IP地址对应的时间阈值和次数阈值。可选地,通过requestresolver类的注解处理器方法对拦截到的目标方法进行解析,读取注解的配置,获取配置的类型(type)。在类型为HTTP的情况下,获取目标方法的请求者IP地址。在一些实施例中,通过HTTPservletrequest获取请求者的IP地址。此外,获取到特定注解中与该IP地址对应的时间阈值(time)与次数阈值(count)。判断上述IP地址在time时间内的请求次数是否超过count次,在请求次数未超过count次的情况下,请求方允许根据请求内容进行调用。
步骤S320,在类型为RPC类型的情况下,获取配置中的参数值,根据配置获取到与参数值对应的时间阈值和次数阈值。在配置的类型为RPC的情况下,获取注解中配置的param参数,例如手机号标识。此外,获取到特定注解中的与该param参数值对应的时间阈值(time)与次数阈值(count)。获取到目标方法中该参数的参数值,例如具体的手机号,再获取到该参数值对应的时间阈值(time)与次数阈值(count)。判断上述参数值对应的请求方在time时间内的请求次数是否超过count次,在请求次数未超过count次的情况下,请求方允许根据请求内容进行调用。
在一个实施例中,在类型为RPC类型的情况下,获取特定注解中配置的param参数的参数值A,解析拦截到的目标方法,获取目标方法中参数上RequestParam注解的注解值B;在A与B相同的情况下,根据配置获取到与参数值对应的时间阈值和次数阈值。可选地,在A和B不相同的情况下,遍历目标方法中的参数。在拦截的目标方法中包括多个参数的情况下,通过拦截的目标方法中的各个参数与特定注解中的参数进行比对,在参数符合的情况下执行上述访问限制方法,能够进一步提高访问限制的准确性。
需要说明的是,在步骤S310提及的获取到特定注解中与该IP地址对应的时间阈值与次数阈值,和步骤S320中提及的获取到特定注解中的与该param参数值对应的时间阈值与次数阈值,并不要求注解中需要针对每个IP地址和每个param参数设置相应的时间阈值和次数阈值,也可以是针对所有IP地址和参数设置相同的时间阈值和次数阈值。而且param参数也是可以根据应用场景进行自定义的,再次并不对参数的具体内容做限制。在步骤S310至步骤S320中,提供了一种根据配置类型进行访问拦截的实现方式,根据HTTP和RPC的不同类型进行相应的拦截处理,提高了请求限制方法的兼容性和处理效率。
在一个实施例中,在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求包括:通过自定义Map以键值结构存储主体标识和请求次数,其中,键值结构中的键对应主体标识,值对应请求次数;在与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。在本实施了中,提供了一种次数阈值的统计方式,可选地,基于Spring AOP技术,能够将注解注释的方法进行拦截处理。基于内存,使用自定义Map进行次数存储,自定义Map扩展了HashMap,提供了一种key-value结构的数据存储方式,key存储的是主体标识,value存储了次数。验证请求次数时可以读取当前自定义Map中的k-v数值进行判断。在一个实施例中,还可以在自定义Map中增加过期时间戳的存储,通过内置定时器,每隔时间阈值对自定义Map中存储的请求次数进行清零。例如,该定时器随着项目启动而启动,60秒进行一次清理过期的k-v数据。用于单位时间阈值内Map数据的过期处理,当用户请求间隔在单位时间阈值后,会重新计算新一个单位时间阈值内的请求次数,而不会继续累加。自定义Map和定时器提供了一种请求次统计和清理的方式,使得请求次数的统计更加准确和高效。
下面通过优选实施例对本申请实施例进行描述和说明。图4是根据本发明优选实施例的请求限制方法的示意图,如图4所示,本优选实施例提供了一下几种类,分别是:注解类,用于供开发者使用的注解;拦截器类,用于拦截特定的注解;处理器类,用于处理被拦截的方法,解析注解和方法参数;定时器类,用于守护线程,进行清理过期标识,以免内存空间被占据。本优选实施例对于拦截进行标识的用户进行两种配置区分。一种是基于用户请求,也就是请求的IP,作为一个标识,在单位时间内进行限制请求次数。另外一种是可以开发者自定义的,也就是可以用用户手机号或者是用户id作为标识,在单位时间内限制该手机号或者是id的请求次数。例如,在用户用手机号注册账户时,便可以配置用户手机作为标识,拦截某个手机号在单位时间内的请求次数。
本优选实施例中一共提供两个注解,分别为RequestLimits注解和RequestParam注解。RequestLimits注解作用于方法上,用于拦截需要限制的接口,包含三种属性:类型属性type用于指示拦截类型,拦截类型包括HTTP和RPC;HTTP类型是根据用户发起请求的IP地址作为标识进行限制;RPC类型中用户可以自定义拦截的标识,例如,要根据手机号进行限制,可以配置参数为phone,则该值配置为phone。则后续RequestParam注解的value在方法参数上的值也需要配置为phone,在拦截处理的时候,就会进行进一步的参数匹配。时间属性time用于请求限制的单位时间,可以预设单位为秒。次数属性count用于请求限制单位时间内的次数。RequestParam注解作用于包含RequestLimits注解方法的参数上。RequestParam注解包含value属性,该值用于匹配RPC配置的值。
本优选实施例基于Spring AOP技术,能够将注解注释的方法进行拦截处理。基于内存,使用了自定义Map以及定时器。自定义Map扩展了HashMap,增加了过期时间戳的存储。此外,通过内置了定时器,随着项目启动而启动,每经过单位时间阈值进行一次过期k-v的清理。用于单位时间内Map数据的过期处理,当用户请求间隔在单位时间后时,会重新计算单位时间的请求次数,而不是累加。
具体地,通过配置拦截器RequestAspect类,通过拦截器拦截到了使用特定requestlimits注解的方法。在方法不包括requestlimits注解的情况下,直接执行调用。在方法包括requestlimits注解的情况下,通过requestresolver类的注解处理器方法对拦截到的目标方法进行解析,读取注解的配置,获取配置的类型(type)。在配置的type值为HTTP的情况下,通过HTTPservletrequest获取请求者的IP地址,并获取到requestlimits注解中的时间阈值(time)与次数阈值(count)。判断上述IP地址在time时间内的请求次数是否超过count次,在请求次数未超过count次的情况下,请求方允许根据请求内容进行调用,在请求次数超过count次的情况下,抛出异常进行请求频繁的提示。在配置的类型为RPC的情况下,获取注解中配置的param参数A,解析拦截到的目标方法,获取目标方法中参数上RequestParam注解的注解值B;在A与B相同的情况下,根据配置获取到与所述参数值对应的时间阈值和次数阈值。在A和B不相同的情况下,则继续遍历目标方法中的参数。然后获取到requestlimits注解中的时间阈值(time)与次数阈值(count)。获取到目标方法中该参数的参数值,例如具体的手机号,再获取到该参数值对应的时间阈值(time)与次数阈值(count)。判断上述参数值对应的请求方在time时间内的请求次数是否超过count次,在请求次数未超过count次的情况下,请求方允许根据请求内容进行调用。在请求次数超过count次的情况下,则抛出异常进行请求频繁的提示。此外,在注解的配置类型既不是HTTP也不是RPC的情况下,也无需进行请求限制,而是采用原本的调用流程。
上述优选实施例中的请求限制方法,提供了几个注解,以及相关的处理器和拦截器,解决了请求限制的兼容性问题,并且避免了开发手动编写相关代码。通过上述优选实施例可以拦截指定条件下,客户端在单位时间内的访问次数。并且不限于HTTP协议下的接口,还是RPC协议下的接口。开发人员可以自定义配置客户端标识的识别,基于IP还是基于实际的业务值。上述请求限制的方法用于统一团队内,可以统一接口限制,方便团队维护以及后期的扩展。
应该理解的是,虽然图2至图4中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,图5是根据本发明实施例的请求限制装置的示意图,如图5所示,提供了一种请求限制装置,包括拦截模块52、获取模块54和限制模块56:
拦截模块52用于拦截使用特定注解的目标方法,读取特定注解的配置;
获取模块54用于判断配置的类型,根据类型获取目标方法的执行主体的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;
限制模块56用于在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。
在一个实施例中,请求限制装置还包括判断模块:判断模块用于判断配置的类型,在类型为HTTP类型的情况下,获取请求者的IP地址,根据配置获取到与IP地址对应的时间阈值和次数阈值;在类型为RPC类型的情况下,获取配置中的参数值,根据配置获取到与参数值对应的时间阈值和次数阈值。
关于请求限制装置的具体限定可以参见上文中对于请求限制方法的限定,在此不再赘述。上述请求限制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,图6是根据本发明实施例的请求限制计算机设备的示意图,如图6所示,提供了一种计算机设备,该计算机设备可以是服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储请求限制数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种请求限制方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
拦截使用特定注解的目标方法,读取特定注解的配置;
判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;
在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
判断配置的类型,在类型为HTTP类型的情况下,获取请求者的IP地址,根据配置获取到与IP地址对应的时间阈值和次数阈值;
在类型为RPC类型的情况下,获取配置中的参数值,根据配置获取到与参数值对应的时间阈值和次数阈值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在类型为RPC类型的情况下,获取配置中的参数值;
解析拦截到的目标方法,获取目标方法中参数的注解值;
在参数值与注解值相同的情况下,根据配置获取到与参数值对应的时间阈值和次数阈值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在参数值与注解值不相同的情况下,遍历目标方法中参数的注解值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过自定义Map以键值结构存储主体标识和请求次数,键对应主体标识,值对应请求次数;
在与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过定时器,每隔时间阈值对自定义Map中存储的请求次数进行清零。
上述请求限制计算机设备,通过拦截使用特定注解的目标方法,读取特定注解的配置,判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。采用本方法能够增加了访问限制方案对HTTP和RPC协议的兼容性,提高了访问限制的部署效率。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
拦截使用特定注解的目标方法,读取特定注解的配置;
判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;
在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
判断配置的类型,在类型为HTTP类型的情况下,获取请求者的IP地址,根据配置获取到与IP地址对应的时间阈值和次数阈值;
在类型为RPC类型的情况下,获取配置中的参数值,根据配置获取到与参数值对应的时间阈值和次数阈值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在类型为RPC类型的情况下,获取配置中的参数值;
解析拦截到的目标方法,获取目标方法中参数的注解值;
在参数值与注解值相同的情况下,根据配置获取到与参数值对应的时间阈值和次数阈值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在参数值与注解值不相同的情况下,遍历目标方法中参数的注解值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
通过自定义Map以键值结构存储主体标识和请求次数,键对应主体标识,值对应请求次数;
在与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
通过定时器,每隔时间阈值对自定义Map中存储的请求次数进行清零。
上述请求限制计算机可读存储介质,通过拦截使用特定注解的目标方法,读取该特定注解的配置,判断配置的类型,根据类型获取目标方法请求者的主体标识,根据配置获取到与主体标识对应的时间阈值和次数阈值,其中,类型包括HTTP类型和RPC类型;在时间阈值内,与主体标识对应的请求次数大于次数阈值的情况下,限制请求者的请求。采用本方法能够增加了访问限制方案对HTTP和RPC协议的兼容性,提高了访问限制的部署效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种请求限制方法,其特征在于,所述方法包括:
拦截使用特定注解的目标方法,读取所述特定注解的配置;
判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取与所述主体标识对应的时间阈值和次数阈值,其中,所述类型包括HTTP类型和RPC类型;
在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
2.根据权利要求1所述的方法,其特征在于,所述判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取与所述主体标识对应的时间阈值和次数阈值包括:
判断所述配置的类型,在所述类型为HTTP类型的情况下,获取所述请求者的IP地址,根据所述配置获取到与所述IP地址对应的时间阈值和次数阈值;
在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
3.根据权利要求2所述的方法,其特征在于,所述在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值包括:
在所述类型为RPC类型的情况下,获取所述配置中的参数值;
解析拦截到的所述目标方法,获取所述目标方法中参数的注解值;
在所述参数值与所述注解值相同的情况下,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
4.根据权利要求3所述的方法,其特征在于,获取所述目标方法中参数的注解值之后,所述方法还包括:
在所述参数值与所述注解值不相同的情况下,遍历所述目标方法中参数的注解值。
5.根据权利要求2所述的方法,其特征在于,所述在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求包括:
通过自定义Map以键值结构存储所述主体标识和所述请求次数,所述键值结构中的键对应所述主体标识,所述键值结构中的值对应所述请求次数;
在与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过定时器,每隔所述时间阈值对所述自定义Map中存储的所述请求次数进行清零。
7.一种请求限制装置,其特征在于,所述装置包括拦截模块、获取模块和限制模块:
所述拦截模块用于拦截使用特定注解的目标方法,读取所述特定注解的配置;
所述获取模块用于判断所述配置的类型,根据所述类型获取所述目标方法请求者的主体标识,根据所述配置获取到与所述主体标识对应的时间阈值和次数阈值,其中,所述类型包括HTTP类型和RPC类型;
所述限制模块用于在所述时间阈值内,与所述主体标识对应的请求次数大于所述次数阈值的情况下,限制所述请求者的请求。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括判断模块:
所述判断模块用于判断所述配置的类型,在所述类型为HTTP类型的情况下,获取所述请求者的IP地址,根据所述配置获取到与所述IP地址对应的时间阈值和次数阈值;在所述类型为RPC类型的情况下,获取所述配置中的参数值,根据所述配置获取到与所述参数值对应的时间阈值和次数阈值。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137084.5A CN112367304B (zh) | 2020-10-22 | 2020-10-22 | 请求限制方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137084.5A CN112367304B (zh) | 2020-10-22 | 2020-10-22 | 请求限制方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112367304A true CN112367304A (zh) | 2021-02-12 |
CN112367304B CN112367304B (zh) | 2022-08-16 |
Family
ID=74511539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011137084.5A Active CN112367304B (zh) | 2020-10-22 | 2020-10-22 | 请求限制方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112367304B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731434A (zh) * | 2014-01-21 | 2014-04-16 | 国家电网公司 | 一种针对非授权访问的安全防范方法 |
CN104995889A (zh) * | 2013-02-19 | 2015-10-21 | Lg电子株式会社 | 用于修改m2m服务设置的方法及其装置 |
CN108196837A (zh) * | 2017-12-25 | 2018-06-22 | 国云科技股份有限公司 | 一种系统权限控制方法 |
CN108989369A (zh) * | 2017-05-31 | 2018-12-11 | 北京京东尚科信息技术有限公司 | 对用户请求进行限流的方法及其系统 |
CN109858257A (zh) * | 2018-12-27 | 2019-06-07 | 北京互金新融科技有限公司 | 访问控制方法及装置 |
CN110381135A (zh) * | 2019-07-18 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
US20200257465A1 (en) * | 2017-12-29 | 2020-08-13 | Huawei Technologies Co., Ltd. | Data Access Method And Storage Array |
CN111625782A (zh) * | 2020-05-25 | 2020-09-04 | 杭州安恒信息技术股份有限公司 | 源码的访问权限控制方法、装置、计算机设备和存储介质 |
-
2020
- 2020-10-22 CN CN202011137084.5A patent/CN112367304B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104995889A (zh) * | 2013-02-19 | 2015-10-21 | Lg电子株式会社 | 用于修改m2m服务设置的方法及其装置 |
CN103731434A (zh) * | 2014-01-21 | 2014-04-16 | 国家电网公司 | 一种针对非授权访问的安全防范方法 |
CN108989369A (zh) * | 2017-05-31 | 2018-12-11 | 北京京东尚科信息技术有限公司 | 对用户请求进行限流的方法及其系统 |
CN108196837A (zh) * | 2017-12-25 | 2018-06-22 | 国云科技股份有限公司 | 一种系统权限控制方法 |
US20200257465A1 (en) * | 2017-12-29 | 2020-08-13 | Huawei Technologies Co., Ltd. | Data Access Method And Storage Array |
CN109858257A (zh) * | 2018-12-27 | 2019-06-07 | 北京互金新融科技有限公司 | 访问控制方法及装置 |
CN110381135A (zh) * | 2019-07-18 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
CN111625782A (zh) * | 2020-05-25 | 2020-09-04 | 杭州安恒信息技术股份有限公司 | 源码的访问权限控制方法、装置、计算机设备和存储介质 |
Non-Patent Citations (4)
Title |
---|
不吃带叶的: "使用注释AOP实现接口访问次数限制", 《CSDN》 * |
张晶等: "微服务框架的设计与实现", 《计算机系统应用》 * |
编码砖家: "[SpringMVC]自定义注解实现控制器访问次数限制", 《CSDN》 * |
赵昱: "基于ServiceComb的多语言微服务平台", 《计算机系统应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112367304B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3496338B1 (en) | Method for identifying application information in network traffic, and apparatus | |
CN105282047B (zh) | 访问请求处理方法及装置 | |
CN107196950B (zh) | 校验方法、装置及服务端 | |
US8448224B2 (en) | Intercepting malicious access | |
CN109586969B (zh) | 内容分发网络容灾方法、装置、计算机设备及存储介质 | |
CN106332183B (zh) | 流量的控制、控制处理方法及装置、终端 | |
CN107341395B (zh) | 一种拦截爬虫的方法 | |
US8856911B2 (en) | Methods, network services, and computer program products for recommending security policies to firewalls | |
CN112953745B (zh) | 服务调用方法、系统、计算机设备和存储介质 | |
CN110493184B (zh) | 在客户端中登录页面的处理方法、装置、电子装置 | |
CN112434039A (zh) | 数据的存储方法、装置、存储介质以及电子装置 | |
CN113542384B (zh) | 访问请求接入控制方法、装置、计算机设备及存储介质 | |
CN110198251B (zh) | 一种获得客户端地址的方法及装置 | |
CN114760619A (zh) | 一种用户信息分析结果反馈方法及其装置 | |
CN113672896A (zh) | 接口权限校验方法、系统、电子装置和存储介质 | |
CN110247857B (zh) | 限流方法及装置 | |
CN106789486B (zh) | 共享接入的检测方法、装置、电子设备及计算机可读存储介质 | |
WO2018010480A1 (zh) | eSIM卡锁网方法、终端及锁网认证服务器 | |
CN110674028A (zh) | 故障注入方法及其装置、业务服务系统 | |
CN113595788A (zh) | 一种基于插件的api网关管理方法及装置 | |
CN114615073B (zh) | 访问流量控制方法及其装置、设备、介质 | |
CN114153626A (zh) | 一种服务集成过程抽象的方法、装置和计算机设备 | |
CN110661787A (zh) | Http重定向状态码捕获方法、装置和计算机设备 | |
CN109246078A (zh) | 一种数据交互方法及服务器 | |
CN105591999A (zh) | 一种校验方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |