限制批量请求服务的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别地涉及一种限制批量请求服务的方法和装置。
【背景技术】
[0002]在Internet给我们带来强大的业务支撑能力的同时,作为服务提供者也同时面临着严峻的来自公网的恶意攻击。这其中有一大类攻击属于利用批量程序快速、重复执行来获取服务,如:批量注册、批量发帖、刷排名、秒杀器、利用爬虫复制网站等等,通过这些批量操作以达到冒充一批用户操作的目的;以批量注册程序为例,如果服务提供者不加限制,一个批量注册程序可以在一台个人计算机上通过并行执行的方式I小时注册上万仿冒用户,这些仿冒用户后续可以进一步用来获得非法收益。
[0003]这些批量操作请求大量的消耗了服务提供者的计算资源,但是带来的却是无效流量、降低了服务性能、干扰了正常用户的访问。为了保证服务的正常运行,服务提供者需要考虑如何限制这类批量操作(常称作“防刷”),使得服务资源能服务于正常用户。
[0004]目前常用的限制批量请求服务(防刷)的手段包括如下方法:
[0005]1、网络层限制:在网络层对请求频率做出策略控制。例如:
[0006](I)、按照IP地址与端口号访问情况做具体限制,如单位时间内允许的访问次数;
[0007](2)、根据HTTP头做规则策略,如限制URL的单位时间访问的IP数量,判断Cookie等信息;
[0008](3)、改变浏览器端设置,利用Cookie变化、Javascript等技术,阻止重复请求,例如:限制http_referer防盗链、限制http_user_agent防爬虫、限制request_method方法、限制http_cookie禁止没有携带正确cookie的访问者。
[0009]2、应用层限制:通过程序主动控制访问行为。例如:
[0010](I)、限制单位时间内访问次数;
[0011](2)、设置访问时间间隔设置;
[0012](3)、设置封锁时间;
[0013](4)、设置黑白名单;
[0014]3、通过反向图灵测试(CAPTCHA、验证码等)屏蔽来自自动程序的访问,一般是设置一个开放问题,对人具有较好的辨识度而机器非常难解决;通过强制要求真实的人员参与回答问题限制程序的批量请求行为,目前流行的验证码测试包括图片辨识、回答随机问题、语音验证等。
[0015]4、手机短信验证,服务向用户手机发送一个验证码并要求用户在完成请求前输入。
[0016]以上方法存在很多不足之处,下面作一简要分析。
[0017]在网络层对访问频率做限制很容易被绕过,同时误封率很高。例如,目前存在大量的NAT架构,服务端采集的访问者IP地址是相同的,基于访问频率限制不可行;利用代理技术和http_C00kie、IP地址伪造可以容易的绕过限制;另外通过程序主动控制访问行为需要设置控制规则,而规则的有效性较难把控,设置合适的黑白名单很困难,不恰当的控制规则可能使得服务的用性降低,例如设置单位时间的访问次数,某种程度上降低了服务的可用性。
[0018]通过验证码方式检查是当前最常见、最成熟的一种解决方案,得到了广泛的应用,但是验证码的有效性取决于机器能否有效辨识及回答问题,问题难度设置太高会给用户带来困难,而随着机器智能的进化难度低的问题已经不能有效阻止机器自动识别。OCR技术的进步使得基于字符扭曲变形等一类基于图像识别测试有效性降低。机器智能进步使得机器自动答题测试变得不再可靠。另外验证码降低了用户体验,对如色盲、老年群体造成了很大的困扰。
[0019]基于手机短信认证具有极高的可靠性,但同时限制也非常大,需要用户绑定手机、有额外的短信发送成本、用户操作繁琐。
【发明内容】
[0020]有鉴于此,本发明提供一种限制批量请求服务的方法和装置,有助于对批量地请求服务的行为做出限制,并有助于克服现有技术中的一些不足之处。
[0021]为实现上述目的,根据本发明的一个方面,提供了一种限制批量请求服务的方法。
[0022]本发明的限制批量请求服务的方法包括:服务端接收终端发送的服务请求信息;所述服务端向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量;所述服务端接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端提供服务,否则拒绝向所述终端提供服务。
[0023]可选地,所述计算题目包括用于消耗所述终端的内存的计算题目。
[0024]可选地,所述服务端向所述终端发送一个计算题目之前,还包括:所述服务端向所述终端发送服务端设备的内存中的多个数据区片的数据;所述计算题目包括:要求所述终端提供所述多个数据区片中的一个指定数据区片中的数据。
[0025]可选地,所述计算题目包括用于消耗所述终端的网络资源的计算题目。
[0026]可选地,所述服务端向所述终端发送一个计算题目之前,还包括:保存多个网络地址,其中每个网络地址上有一个文件;并且保存所述多个网络地址上的文件的数字摘要值;所述计算题目包括:要求所述终端提供所述多个网络地址中的指定网络地址上的文件的数字摘要值。
[0027]根据本发明的另一方面,提供了一种限制批量请求服务的装置。
[0028]本发明的限制批量请求服务的装置包括:接收模块,用于接收终端发送的服务请求信息;出题模块,用于向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量;验证响应模块,用于接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端返回表示验证通过的信息,否则向所述终端返回表示验证未通过的信息。
[0029]可选地,所述计算题目包括用于消耗所述终端的内存的计算题目。
[0030]可选地,还包括内存数据发送模块,用于向所述终端发送服务端设备的内存中的多个数据区片的数据;所述计算题目包括:要求所述终端提供所述多个数据区片中的一个指定数据区片中的数据。
[0031]可选地,所述计算题目包括用于消耗所述终端的网络资源的计算题目。
[0032]可选地,还包括网络地址保存模块,用于保存多个网络地址,其中每个网络地址上有一个文件;并且保存所述多个网络地址上的文件的数字摘要值;所述计算题目包括:要求所述终端提供所述多个网络地址中的指定网络地址上的文件的数字摘要值。
[0033]根据本发明的技术方案,提供服务的服务端对请求服务的终端出具计算题目,该计算题目对于服务端和终端的计算资源需求是不对称的。这种方式使终端必须解题才可以进一步获得服务,这种限制无法绕过;并且对于仅请求一次或几次的合法终端来说并不消耗太多计算资源,从而不会降低服务的可用性;而对于使用程序恶意批量请求的终端来说则会有效消耗其计算资源使其难以继续进行请求;另外本技术方案显然也避免了现有的以验证码检查终端、手机短信认证终端等方案的局限性。
【附图说明】
[0034]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0035]图1是根据本发明实施例的限制批量请求服务的方法的主要步骤的示意图;
[0036]图2是根据本发明实施例的限制批量请求服务的装置的主要模块的示意图。
【具体实施方式】
[0037]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0038]在本发明实施例中,通过提高批量请求发起者程序的单次请求资源消耗,使得批量请求发起者在单位时间内能执行的请求次数得到自然的限制。本实施例的限制批量请求服务方法中,由服务提供者对服务请求者给出题目,而服务请求者程序必须消耗计算资源(CPU、内存、网络资源等)解题。题目的难度最好是设置在一个合理范围,使得客户端资源消耗对于离散的单个正常用户的计算规模控制在一个可接受范围,而对于并行批量请求尤其是并行批量请求因为资源要求倍增变得很难进行。设置的题目对于请求者(进行解题的一方)和服务端(进行验算的一方)的资源需要是非对称的,验算的资源消耗很小以不降低服务端的性能。上述的不对称问题可以基于非对称算法(如大数分解)或信息的不对称性(例如要求服务请求者下载并计算一个文件摘要值,该文件摘要对于服务提供者已知)设计。
[0039]以批量注册用户举例来说,一个恶意注册程序可以在一台主流配置的个人计算机上非常轻松的
并行执行256个批处理线程,每线程消耗IM内存,每次注册网络流量消耗8K字节,每个线程I秒注册成功一个新用户,则I分钟可以注册256X60 = 15360个新用户;其资源消耗为内存256X 1M,流量消耗256X8K = 2M字节。
[0040]采用本方法,服务提供者要求请求者每次注册用户需要解决一道题目,其需要的资源提高以CPU以100%负载计算2s、内存消耗1G、网络流量消耗IM字节来计算,对于上面的例子,攻击者如果还是启动256个线程,I分钟内最多只能注册成功30个用户,而资源消耗为CPU负载100%、256G内存消耗、256M字节网络流量。
[0041]图1是根据本发明实施例的限制批量请求服务的方法的主要步骤的示意图。该方法由上述的服务提供者所维护的服务器来执行。
[0042]步骤Sll:服务端接收终端发送的服务请求信息。这里的终端即为用户使用的客户端软件。该服务请求信息可能是正常用户所发送,也可能是恶意用户所发送。
[0043]步骤S12:服务端向该终端发送一个计算题目。如前文所述,该计算题目对于终端的计算资源需求量要大于其对服务端的计算资源需求量,以实现对终端的计算资源的适当消耗。
[0044]步骤S13:服务端接收终端对题目的计算结果。
[0045]步骤S14:服务端验证收到的计算结果是否正确。若正确,进入步骤S15,向终端提供服务;否则进入步骤S16,拒绝向终端提供服务。当然无论结果正确与否,都会向终端发送相应的提示信息。
[0046]为保证解题和验算资源需求的不对称性,需要仔细设计验证题目,以下从三个方面的资源要求来分别阐述。
[0047]CPU计算资源消耗:存在多种非对称算法,例如大数分解,解题的计算复杂度可以通过目标数的位数来控制,解题与验算的计算资源要求具不对称性,验算成本很低(执行有限次的乘法操作);在实际系统中可以使用几种算法交错使用进一步提高安全性。
[0048]内存资源消耗:基于信息不对称性,可通过如下方法实现资源需求的不对称性:对于服务提供者,只需要随机选择一个数据区片作为问题,且只需要保存这一个数据区片(甚至只需要保存该数据区片的摘要);而对于服务请求者,因为不知道服务提供者会要求回答哪个数据区片的数据内容,只能选择保存所有的数据区片。按照这种方式,服务端可以向终端多次地发送服务端设备的内存中的不同数据区片,然后给终端出的题目内容可以是“X区片的数据是什么”,其中X表示指定的一个区片。可以看出这种方式对于服务端和请求服务的终端的内存资源消耗是非对称的。
[0049]网络资源消耗:可以建立一个资料库,资料库中存放一系列指向Internet网上的公开文件的链接,每个文件的数字摘要值都预先算出保存,在验证时服务提供者随机选择一个文件,服务请求者被要求下载此文件,并计算数字摘要值以通过验证。
[0050]图2是根据本发明实施例的限制批量请求服务的装置的主要模块的示意图。该装置作为计算机软件,可设置在上述的服务端设备中。如图2所示,限制批量请求服务的装置20主要包括:接收模块21、出题模块22、以及验证响应模块23。接收模块21用于接收终端发送的服务请求信息;出题模块22用于向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量;验证响应模块23用于接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端返回表示验证通过的信息,否则向所述终端返回表示验证未通过的信息。
[0051]计算题目可包括用于消耗终端的内存的计算题目。这样,装置20还可包括内存数据发送模块,用于向终端发送服务端设备的内存中的多个数据区片的数据;并且计算题目可包括:要求终端提供所述多个数据区片中的一个指定数据区片中的数据。
[0052]计算题目可包括用于消耗终端的网络资源的计算题目。这样,装置20还可包括网络地址保存模块,用于保存多个网络地址,其中每个网络地址上有一个文件;并且保存所述多个网络地址上的文件的数字摘要值;并且计算题目可包括:要求终端提供所述多个网络地址中的指定网络地址上的文件的数字摘要值。
[0053]根据本发明实施例的技术方案,提供服务的服务端对请求服务的终端出具计算题目,该计算题目对于服务端和终端的计算资源需求是不对称的。这种方式使终端必须解题才可以进一步获得服务,这种限制无法绕过;并且对于仅请求一次或几次的合法终端来说并不消耗太多计算资源,从而不会降低服务的可用性;而对于使用程序恶意批量请求的终端来说则会有效消耗其计算资源使其难以继续进行请求;另外本技术方案显然也避免了现有的以验证码检查终端、手机短信认证终端等方案的局限性。
[0054]以上结合具体实施例描述了本发明的基本原理,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
[0055]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【主权项】
1.一种限制批量请求服务的方法,其特征在于,包括: 服务端接收终端发送的服务请求信息; 所述服务端向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量; 所述服务端接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端提供服务,否则拒绝向所述终端提供服务。2.根据权利要求1所述的方法,其特征在于,所述计算题目包括用于消耗所述终端的内存的计算题目。3.根据权利要求2所述的方法,其特征在于, 所述服务端向所述终端发送一个计算题目之前,还包括:所述服务端向所述终端发送服务端设备的内存中的多个数据区片的数据; 所述计算题目包括:要求所述终端提供所述多个数据区片中的一个指定数据区片中的数据。4.根据权利要求1所述的方法,其特征在于,所述计算题目包括用于消耗所述终端的网络资源的计算题目。5.根据权利要求4所述的方法,其特征在于, 所述服务端向所述终端发送一个计算题目之前,还包括:保存多个网络地址,其中每个网络地址上有一个文件;并且保存所述多个网络地址上的文件的数字摘要值; 所述计算题目包括:要求所述终端提供所述多个网络地址中的指定网络地址上的文件的数字摘要值。6.一种限制批量请求服务的装置,其特征在于,包括: 接收模块,用于接收终端发送的服务请求信息; 出题模块,用于向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量; 验证响应模块,用于接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端返回表示验证通过的信息,否则向所述终端返回表示验证未通过的信息。7.根据权利要求6所述的装置,其特征在于,所述计算题目包括用于消耗所述终端的内存的计算题目。8.根据权利要求7所述的装置,其特征在于, 还包括内存数据发送模块,用于向所述终端发送服务端设备的内存中的多个数据区片的数据; 所述计算题目包括:要求所述终端提供所述多个数据区片中的一个指定数据区片中的数据。9.根据权利要求6所述的装置,其特征在于,所述计算题目包括用于消耗所述终端的网络资源的计算题目。10.根据权利要求9所述的装置,其特征在于, 还包括网络地址保存模块,用于保存多个网络地址,其中每个网络地址上有一个文件;并且保存所述多个网络地址上的文件的数字摘要值; 所述计算题目包括:要求所述终端提供所述多个网络地址中的指定网络地址上的文件的数字摘要值。
【专利摘要】本发明提供一种限制批量请求服务的方法和装置,有助于对批量地请求服务的行为做出限制,并有助于克服现有技术中的一些不足之处。本发明的限制批量请求服务的方法包括:服务端接收终端发送的服务请求信息;所述服务端向所述终端发送一个计算题目,该计算题目对于所述终端的计算资源需求量大于其对所述服务端的计算资源需求量;所述服务端接收所述终端对所述题目的计算结果,然后对该结果进行验证,若正确,则向所述终端提供服务,否则拒绝向所述终端提供服务。
【IPC分类】G06F21/31
【公开号】CN104899482
【申请号】CN201510148230
【发明人】李伟奇
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
【公开日】2015年9月9日
【申请日】2015年3月31日