CN112566121A - 一种防止攻击的方法及服务器、电子设备、存储介质 - Google Patents
一种防止攻击的方法及服务器、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112566121A CN112566121A CN202011451024.0A CN202011451024A CN112566121A CN 112566121 A CN112566121 A CN 112566121A CN 202011451024 A CN202011451024 A CN 202011451024A CN 112566121 A CN112566121 A CN 112566121A
- Authority
- CN
- China
- Prior art keywords
- short message
- request
- verification code
- client
- message verification
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/06—Authentication
Abstract
本发明提供一种防止短信服务被攻击的方法及服务器、电子设备、存储介质,应用于服务端的方法包括:接收客户端发送的短信验证码请求,其中,所述短信验证码请求中包括请求参数及第一密文数据,所述第一密文数据由所述客户端基于密钥及至少部分请求参数形成,所述密钥由所述服务器颁发给所述客户端;基于所述密钥及至少部分请求参数形成第二密文数据;基于所述第一密文数据及所述第二密文数据验证所述客户端身份;在客户端身份验证通过的情况下,验证短信验证码请求是否有效;若短信验证码请求有效,则允许向请求参数中指定的通讯号码中发送第一短信验证码。本发明的方法能够有效防止攻击方脱离客户端而直接与服务端交互,对服务端造成攻击的行为。
Description
技术领域
本发明实施例涉及网络攻击领域,特别涉及一种防止攻击的方法及服务器、电子设备、存储介质。
背景技术
随着互联网技术的迅速发展,短信验证码认证的方式已被广大用户使用,并不陌生,不管是在在平时使用软件产品还是物联网硬件产品都会经常用到短信验证码,如手机APP、电商平台支付、网上银行支付、用户找回密码等,都会通过使用短信验证码认证进行合法身份的校验,验证用户合法身份。而由于短信服务就需要暴露出给客户端用于调用发送短信接口来完成相关的业务,会吸引来很多攻击者的恶意攻击,网络恶意攻击的方法也越来越多,例如CC(Challenge Collapsar)CC攻击、DDOS攻击及流量攻击等。因此,短信服务暴露的发送短信接口就容易遭到攻击者的恶意攻击,这一风险会对企业造成很大的危害,不仅是资金上的消耗导致运营成本升高,还会影响正常用户的使用导致用户的流失。
传统解决方法包括:
1.同一手机号短信发送间隔时间设置
限制每个手机号发送的时间间隔,比如60秒,没超过60秒,不允许发送。
2.同一手机号发送量限制
限制每个手机号的每日发送次数,超过次数不允许发送。
但是由于传统解决方法固化,而且随着时间的推移,现在的短信服务攻击方法不仅越来越多,攻击能力也在不断提升,例如目前攻击者可通过抓包工具获取到客户端请求出去的发送短信验证码的链接,然后通过写攻击脚本篡改请求接口的数据,脱离用户的客户端直接调用短信服务接口进行攻击,故而使得传统解决方法都可以被攻击者们巧妙地避开,进而实现攻击。
发明内容
为了解决上述技术问题,本发明实施例提供了一种防止攻击的方法,应用于服务端,所述方法包括:
接收客户端发送的短信验证码请求,其中,所述短信验证码请求中包括请求参数及第一密文数据,所述第一密文数据由所述客户端基于密钥及至少部分请求参数形成,所述密钥由所述服务器颁发给所述客户端;
基于所述密钥及所述至少部分请求参数形成第二密文数据;
基于所述第一密文数据及所述第二密文数据验证所述客户端身份;
在所述客户端身份验证通过的情况下,验证所述短信验证码请求是否有效;
若所述短信验证码请求有效,则允许向所述请求参数中指定的通讯号码中发送第一短信验证码。
作为优选,所述密钥由所述服务器基于非网络传输的方式颁发至所述客户端。
作为优选,所述基于所述密钥及所述至少部分请求参数形成第二密文数据,包括:
调用第一加密接口对所述至少部分请求参数加密,得到所述第二密文数据,其中,所述第一加密接口的数据加密方式与第二加密接口的数据加密方式相匹配,所述第二加密接口为所述客户端在形成第一密文数据时调用的加密接口。
作为优选,所述密钥被分别固定在所述第一加密接口和所述第二加密接口中。
作为优选,所述请求参数包括客户端本地时间戳和客户端唯一ID中的至少一个,所述第一密文数据及所述第二密文数据基于所述客户端本地时间戳和客户端唯一ID中的至少一个,以及所述通讯号码而形成。
作为优选,所述验证所述短信验证码请求是否有效,包括:
确定在当前时间点之前的预设时间段内是否向所述通讯号码发送过第二短信验证码,若否,则确定所述短信验证码请求的请求链接有效,若是,则确定所述短信验证码请求的请求链接无效。
作为优选,所述验证所述短信验证码请求是否有效,包括:
确定所述服务器中是否存储有对应所述短信验证码请求的第一加密编码,所述第一加密编码为确定向所述通讯号码发送所述第二短信验证码的情况下,对所述第二短信验证码对应的短信验证码请求以指定格式进行存储时生成的查询字段。
作为优选,在允许发送所述第一短信验证码至所述请求参数中指定的通讯号码中之后,还包括:
调用通讯设备运营商将所述第一短信验证码发送至所述通讯号码中;
将所述短信验证码请求以所述指定格式进行存储,并生成用于标记所述短信验证码请求的第二加密编码。
作为优选,还包括:
验证所述短信验证码请求是否过期。
本发明还提供一种防止攻击的方法,应用于客户端,所述方法包括:
确定请求参数,所述请求参数中包括用于接收第一短信验证码的通讯号码;
基于密钥以及至少部分请求参数形成第一密文数据,其中,所述密钥由所述服务器颁发给所述客户端;
基于所述请求参数及所述第一密文数据形成短信验证码请求;
向所述服务端发送所述短信验证码请求。
作为优选,所述基于密钥以及至少部分请求参数形成第一密文数据,包括:
调用第二加密接口对所述至少部分请求参数加密,得到所述第一密文数据;其中,所述密钥被固定在所述第二加密接口中。
作为优选,所述请求参数还包括客户端本地时间戳和客户端唯一ID中的至少一个;
所述基于密钥以及至少部分请求参数形成第一密文数据,包括:
对所述客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码进行加密,得到所述第一密文数据。
本发明同时提供一种服务器,包括:
数据接收器,用于接收客户端发送的短信验证码请求,其中,所述短信验证码请求中包括请求参数及第一密文数据,所述第一密文数据由所述客户端基于密钥及至少部分请求参数形成,所述密钥由所述服务器颁发给所述客户端;
第一处理器,用于根据所述密钥及所述至少部分请求参数形成第二密文数据,根据所述第一密文数据及所述第二密文数据验证所述客户端身份,并在所述客户端身份验证通过的情况下,验证所述短信验证码请求是否有效,若所述短信验证码请求有效,则允许向所述请求参数中指定的通讯号码中发送第一短信验证码。
本发明还提供一种电子设备,包括:
第二处理器,用于确定请求参数,并基于密钥以及至少部分请求参数形成第一密文数据,基于所述请求参数及所述第一密文数据形成短信验证码请求,其中,所述请求参数中包括用于接收第一短信验证码的通讯号码,所述密钥由所述服务器颁发给所述客户端;
发送器,用于向所述服务端发送所述短信验证码请求。
本发明还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法。
基于本发明上述实施例的公开可以获知,本发明实施例具备的有益效果包括:
1、通过仅能够被客户端及服务端知晓的密钥来实现对数请求数据加密,并辅助实现对客户端身份是否合法、短信验证码请求是否过期进行认证来确定服务端是否响应本次请求并发送短信验证码,上述过程由于使用了密钥来对请求参数进行了加密,而密钥又不被第三方所知,所以攻击者即使通过抓包行为抓获了请求数据包,也无法解密请求数据,故不能获得客户端信息,无法实现脱离客户端而直接向服务端发送大量请求以造成攻击,因此基于本发明上述实施例公开的方案能够显著提高服务端安全性。
2、通过增加验证请求链接是否失效的步骤来进一步辅助确定服务端是否响应客户端请求,使得服务端在确定之前的预设时间段内是否已经发送过短信验证码,若确定发送过,则对应当前次短信验证码请求的请求链接处于失效状态,无法再次发送短信验证码,如此便可进一步防止攻击方通过对客户端已经发出的请求链接进行抓包,并通过写攻击脚本篡改请求接口的数据而实现脱离客户端,直接请求服务端的事件发生,达到避免服务端被攻击的效果。
附图说明
图1为本发明实施例中的应用于服务端的防止攻击的方法的流程图。
图2为本发明实施例中的防止攻击的方法在实际应用时的交互流程图。
图3为本发明实施例中的防止攻击的方法在实际应用时设备间的数据交互逻辑图。
图4为本发明实施例中的应用于客户端的防止攻击的方法的流程图。
图5为本发明实施例中的服务器的结构框图。
图6为本发明实施例中的电子设备的结构框图。
具体实施方式
下面,结合附图对本发明的具体实施例进行详细的描述,但不作为本发明的限定。
应理解的是,可以对此处公开的实施例做出各种修改。因此,下述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本发明的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本发明进行了描述,但本领域技术人员能够确定地实现本发明的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本公开的具体实施例;然而,应当理解,所公开的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所公开的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。
下面,则详细说明本发明实施例。
目前随着互联网技术的迅速发展,通过短信验证码进行认证的方式已经被广泛应用,不论是在平时使用软件产品还是物联网硬件产品都会经常用到短信验证码,如登录手机APP、电商平台支付、网上银行支付、用户找回密码等。而向服务器请求发送短信验证码,是需要通过调用负责发送短信验证码接口给接收手机号发送短信验证码的云服务,也即,需要调用短信服务。然而,在调用短信服务时,其会暴露出给客户端用于调用发送短信的接口来完成相关的业务,如此就会吸引来很多的恶意攻击,而现有的防止攻击方法已经无法应对日益更新的攻击行为,因此本发明目的是提供一种防止短信服务被攻击的方法,用以解决传统解决方案中攻击者们可以脱离用户客户端对短信服务直接发送短信验证码接口的调用请求,实现对服务端的攻击,造成企业资金消耗,影响企业正常用户使用的问题。
如图1所示,本发明实施例提供一种防止攻击的方法,应用于服务端,该方法包括:
接收客户端发送的短信验证码请求,其中,短信验证码请求中包括请求参数及第一密文数据,第一密文数据由客户端基于密钥及至少部分请求参数形成,密钥由服务器颁发给客户端;
基于密钥及至少部分请求参数形成第二密文数据;
基于第一密文数据及第二密文数据验证客户端身份;
在客户端身份验证通过的情况下,验证短信验证码请求是否有效;
若短信验证码请求有效,则允许向请求参数中指定的通讯号码中发送第一短信验证码。
例如,服务端可以是短信服务器,具有短信服务功能,其为通过调用负责发送短信验证码接口给目标通讯号码,例如接收手机号,发送短信验证码的云服务。当然,服务端也可为其他具有短信服务功能的服务器,并不限于短信服务器。
客户端可以为通过例如使用安卓手机应用程序、苹果手机应用程序、Windows电脑应用程序、苹果电脑应用程序或浏览器应用程序等调用上述短信服务发送验证码的应用程序,也即,该客户端可以为设置在移动终端或固定终端上,如设置在手机、台式机上的一个应用程序。
结合图2和图3,当服务端接收到客户端发送的短信验证码请求,如为POST请求,服务端会基于短信验证码请求中包含的第一密文数据以及请求参数来对客户端身份是否合法进行验证,同时对短信验证码请求是否过期,最终确定是否同意客户端调用短信服务。上述的请求参数包含了用于接收短信验证码的通讯号码以及其他信息,例如表征用户身份的信息等,具体不定。第一密文数据是基于服务端颁发给客户端的密钥来对至少部分请求参数进行加密而形成的,该密钥可以是服务端自己生成的,也可以是服务端运维人员输入的,还可以是服务端从其他设备处获得。服务端接收到短信验证码请求后会基于密钥以及至少部分请求参数计算出第二密文数据,接着基于该第一密文数据和第二密文数据来验证客户端身份,例如可以通过验证二者的相似度,二者的差值是否是预定值,二者的乘积是否为预定值等等方式来对客户端身份进行验证。当客户端身份验证通过后,服务端则继续对短信验证码请求是否有效进行验证,若验证再次通过,则服务端允许向请求参数中指定的通讯号码发送短信验证码,也就是允许客户端调用服务端的短信服务功能,以发送短信验证码。
基于上述内容可知,本实施例中的防止攻击的方法通过仅能够被客户端及服务端知晓的密钥来实现对请求数据加密,并辅助实现对客户端身份是否合法、短信验证码请求是否过期进行认证来确定服务端是否响应本次请求并发送短信验证码,上述过程由于使用了密钥来对请求参数进行了加密,而密钥又不被第三方所知,所以攻击者即使通过抓包行为抓获了请求数据包,也无法解密请求数据,故不能获得客户端信息,无法实现脱离客户端而直接向服务端发送大量请求以造成攻击,因此基于上述实施例公开的方案能够显著提高服务端安全性。
优选地,为了提高密钥的安全性,使除了服务端和客户端以外的第三方极难获取,本实施例中的密钥是由服务器基于非网络传输的方式颁发至客户端的,例如可以通过客户端与服务端的运维人员间的口头告知,如通过电话的方式,或者通过短信的形式告知,再或者,服务端和客户端通过设备间的有线传输方式等实现告知。
进一步地,上述请求参数包括客户端本地时间戳和客户端唯一ID中的至少一个,第一密文数据及第二密文数据基于客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码而形成。
具体地,本实施例中的请求参数优选同时包括客户端本地时间戳和客户端唯一ID,第一密文数据及第二密文数据是同时基于客户端本地时间戳和客户端唯一ID以及通讯号码形成的,由于客户端唯一ID以及客户端本地时间戳均具有唯一性,不能被篡改,一旦篡改就会导致客户端身份验证不成功。故,本实施例中优选将二者同时记录在请求参数中,能够增加验证难度,使攻击方不易模仿,不能够通过篡改ID和时间戳来实现对服务端发送大量请求以进行攻击的目的,从而有效保护服务端免受攻击。
进一步地,继续结合图3,本实施例中,基于密钥及至少部分请求参数形成第二密文数据,包括:
调用第一加密接口对至少部分请求参数加密,得到第二密文数据,其中,第一加密接口的数据加密方式与第二加密接口的数据加密方式相匹配,第二加密接口为客户端在形成第一密文数据时调用的加密接口。
例如,在服务端确定了密钥后,会基于密钥在本地生成一用于对数据进行加密计算的第一加密接口,该第一加密接口与客户端上基于密钥生成的第二加密接口的数据加密方式相匹配,如此可使得两个加密接口在基于相同的数据来进行加密计算时,输出的结果应该是相同的。
具体地,例如,服务端成32个字节的随机数作为密钥,并将其颁发给客户端。服务端确定了密钥后,便利用C语言结合密钥及HMacSha256算法来生成第一加密接口,并将其集成在现有程序中,以方便调用。其中,HMACSHA256算法是一种密钥哈希算法,它是从SHA-256哈希函数构造而成的,并用作基于哈希的消息身份验证代码(HMAC)。HMAC进程将密钥与消息数据混合,使用哈希函数对结果进行哈希处理,再将哈希值与密钥进行混合,然后再次应用哈希函数,输出散列的长度为256位。该算法是目前安全等级较高的算法,与密钥结合度强,较难攻破。服务端采用上述算法生成的第一加密接口便可实现对请求参数的加密,生成第二密文数据。实际应用时,输入参数还可以包含明文字节数组和明文长度,输出参数则对应包含密文字节数组和密文长度。
优选地,本实施例中的密钥被分别固定在第一加密接口和第二加密接口中。也就是,密钥是以固定形式融合在各个加密接口中,相当于“写死”在接口程序中,不会再被改变。该种形式可以确保密钥不会被轻易篡改,提高安全性。
进一步地,本实施例中在基于第一密文数据及第二密文数据验证客户端身份时,是通过比对第一密文数据和第二密文数据是否相同来实现的,仅在第一密文数据和第二密文数据相同的情况下,才确定客户端身份验证通过。例如,客户端是以客户端唯一ID、客户端本地时间戳以及通讯号码基于第二加密接口进行加密形成的第一密文数据,其中,客户端本地时间戳为其发送请求至服务端时的时间戳。服务端接收到请求参数后,会基于请求参数中的客户端唯一ID、通讯号码以及服务端接收到请求时的本地时间戳,并基于第一加密接口进行加密形成第二密文数据,接着服务端对比计算得到的第二密文数据和短信验证码请求中包含的第一密文数据是否相同来验证客户端身份。其中,值得注意的是,上述输入至加密接口中的数据的顺序可变,例如可预先将需输入加密接口中的数据进行拼接,拼接顺序可固定,也可不固定。
另外,优选地,为了进一步提高密文数据的加密等级,可对由加密接口生成的密文数据进行编码,例如使用Base64算法对生成的密文数据进行编码,此时服务端收到的第一密文数据就是被编码后的第一密文数据,服务端在验证身份时需要对生成的第二密文数据同样基于Base64算法进行编码,最终通过比对编码后的第一密文数据和第二密文数据是否一致来确定客户端身份是否合法。倘若不合法,则服务端反馈客户端短信验证码请求失败结果。
进一步地,继续结合图3,倘若客户端身份验证通过,则服务端会验证短信验证码请求是否有效,包括:
确定在当前时间点之前的预设时间段内是否向通讯号码中发送过第二短信验证码,若否,则确定短信验证码请求的请求链接有效,若是,则确定短信验证码请求的请求链接无效。
上述过程是指服务端需要确定在当前时间点之前的预设时间段里,例如是1分钟内,2分钟内等,是否已经响应过客户端,并已经向同一通讯号码发送了验证码,倘若发送过,那么当前这个请求链接对于服务端而言就是失效链接,服务端已经无法基于该请求链接再次执行发送短信验证码的操作了,故此时服务端仅能够向客户端反馈请求链接失效的请求失败信息,而倘若确定未曾发送过短信验证码,那么服务端便可基于该请求链接调用短信服务功能,进而执行向通讯号码发送短信验证码的操作。
具体地,本实施例中在验证短信验证码请求是否有效时,包括:
确定服务器中是否存储有对应短信验证码请求的第一加密编码,第一加密编码为确定向通讯号码发送第二短信验证码的情况下,对第二短信验证码对应的短信验证码请求进行存储时生成的查询字段。
例如,服务端每基于一验证通过的短信验证码请求而调用短信服务功能,发送了一短信验证码(相当于第二短信验证码)后,均会将该短信验证码请求进行存储,优选以指定格式存储,以避免第三方恶意黑入服务端中对存储的短信验证码请求进行篡改,而且,服务端可以基于指定格式的存储改变存储量,达到压缩存储的效果,同时能够方便管理及后期查询,当然,该指定格式具体也可根据选用的数据库格式等而定。具体应用时,可将上述短信验证码请求的数据存储至redis(Remote Dictionary Server,远程字典服务)型数据库中,本实施例中是将短信验证码请求数据缓存至该数据库中,然后以MD5编码方式对短信验证码请求数据进行处理,生成相应的且唯一匹配的查询字段。在验证短信验证码请求是否有效时,可在redis数据库中查询在有效时间内已经向同一通讯号码发送过短信验证码,查询时,服务端需要将请求参数中的明文数据(通讯号码+客户端唯一ID+客户端本地时间戳)进行拼接,接着基于MD5编码方式对拼接的数据进行计算,得到MD5编码,再基于该编码当做查询字段在redis数据库中进行查询,若能通过该查询字段查询出结果则确定客户端请求链接已失效,否则调用运营商向指定的通讯号码中发送短信验证码。
本实施例中通过增加验证请求链接是否失效的步骤来进一步辅助确定服务端是否响应客户端请求,使得服务端在确定之前的预设时间段内是否已经发送过短信验证码,若确定发送过,则对应当前次短信验证码请求的请求链接处于失效状态,无法再次发送短信验证码,如此便可进一步防止攻击方通过对客户端已经发出的请求链接进行抓包,并通过写攻击脚本篡改请求接口的数据而实现脱离客户端,直接请求服务端的事件发生,达到避免服务端被攻击的效果。
进一步地,当本次短信验证码请求验证均通过,服务端允许向请求参数中指定的通讯号码中发送第一短信验证码之后,本实施例中的方法还包括:
调用通讯设备运营商将第一短信验证码发送至通讯号码中;
将短信验证码请求以指定格式进行存储,并生成用于标记短信验证码请求的第二加密编码。
也即,继续结合上述实施例可知,在服务端允许向指定的通讯号码中发送短信验证码之后,服务端中的短信服务功能便会调用通讯设备运营商,以通过该运营商将生成的第一短信验证码发送至客户端指定的通讯号码中。之后,服务端便会将本次的短信验证码请求中的数据进行MD5编码,然后存储在redis数据库中,本次对应短信验证码请求的MD5编码会持续保存在数据库中一段时间,例如5分钟等,之后会被自动删除,以节约存储空间。
优选地,本实施例中的方法还包括:
验证短信验证码请求是否过期。
例如,在客户端身份验证通过后,可以对客户端发出请求参数中的客户端时间戳进行验证,具体可通过与服务端本地时间戳进行对比,若服务端本地时间大于客户端请求参数中的时间超过5分钟,3分钟等预设时间间隔,则服务端确定该请求过期,回复请求链接已失效,否则继续执行后续方案。当然,该验证步骤也可在确定短信验证码请求链接是否有效之后执行,具体执行位置不定。
进一步地,如4所示,本发明另一实施例提供一种防止攻击的方法,应用于客户端,该方法包括:
确定请求参数,请求参数中包括用于接收第一短信验证码的通讯号码;
基于密钥以及至少部分请求参数形成第一密文数据,其中,密钥由服务器颁发给客户端;
基于请求参数及第一密文数据形成短信验证码请求;
向服务端发送短信验证码请求。
例如,客户端确定用于接收短信验证码的通讯号码后,将其记录在请求参数中,接着基于从服务端处获得的密钥来对至少部分请求参数进行加密处理,以形成第一密文数据。之后,客户端会基于第一密文数据以及请求参数形成短信验证码请求,最后将该请求发送至服务端中,由服务端对该请求进行一系列处理,最终确定是否允许发送短信验证码至客户端指定的通讯号码中。
由上述内容可知,通过对请求参数利用密钥进行加密,可使得请求数据在发送至服务端的过程中更安全,即使被攻击方抓包,但是由于攻击方不具有密钥,故很难解密请求数据,从而不能实现篡改脚本,使能够脱离客户端而直接调用服务端短信服务功能的目的,避免了服务端被攻击的现象发生。
进一步地,本实施例中的请求参数还包括客户端本地时间戳和客户端唯一ID中的至少一个;
基于密钥以及至少部分请求参数形成第一密文数据,包括:
对客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码进行加密,得到第一密文数据。
具体地,本实施例中的请求参数优选包括客户端唯一ID、用于接收短信验证码的通讯号码、客户端本地时间戳,当然也可仅包含唯一ID和通讯号码或时间戳及通讯号码。本实施例中的第一密文数据是由客户端基于密钥来对上述三个参数进行加密而形成的。本实施例中通过在请求参数中增加唯一ID和客户端本地时间戳,可通过该两个参数具有唯一性的特性,使得攻击方在获取到请求数据后不易对该两个参数进行篡改,因为一旦篡改,就会导致服务端对客户端身份验证不通过,如此依旧无法实现攻击。
进一步地,本实施例中,基于密钥以及至少部分请求参数形成第一密文数据,包括:
调用第二加密接口对至少部分请求参数加密,得到第一密文数据;其中,密钥被固定在第二加密接口中。
例如,为了方便对请求参数进行加密,可以利用密钥并基于HMacSha256算法来在客户端程序中固定加入一第二加密接口,而密钥是“写死”在该接口程序中的,不易被篡改。当客户端准备好请求参数后,可将该请求参数输入至第二加密接口中,使经过该第二加密接口来对请求参数进行加密,最终生成第一密文数据。
优选地,为了进一步增加安全效果,本实施例中对于加密后的第一密文数据会进行编码,例如通过Base64算法来对密文进行编码,该算法可由客户端执行计算,也可将其融入至接口程序中,使在第二加密接口中直接对生成的第二密文数据进行编码,最终输出能够直接发送至服务端的密文数据,具体不定。
进一步地,如图2和图3所示,为了更好地描述上述两个实施例中分别应用于服务端及客户端的方法,以下结合具体应用实例进行详细说明:
1)客户端调用本地集成的C语言实现的HmacSha256接口,即第二加密接口对接收短信验证码的手机号+客户端唯一ID+客户端本地时间戳进行加密,并利用Base64算法将加密后的数据进行编码形成请求密文数据;
2)客户端调用短信服务发送短信验证码接口并将短信验证码请求(包括接收验证码手机号、客户端唯一ID、客户端本地时间戳、请求密文数据)发送至短信服务器。
3)短信服务器接收到来自客户端发送的短信验证码请求后校验客户端身份是否合法、校验客户端发送的请求是否过期、校验客户端发送的请求链接是否失效;
上述过程具体可结合以下代码:
4)短信服务器确定所有校验都通过后,短信服务调用短信运营商发送短信验证码接口,并将接受短信验证码手机号和短信验证码一同提供给短信运营商接口,使基于短信运营商通过短信将验证码发送至指定的手机号中;
5)客户端收到短信服务返回的短信验证码发送成功的通知信息;
6)用户的手机接收到短信验证码;
7)用户提交短信验证码至客户端;
8)客户端验证客户端提交的短信验证码是否正确且有效;
9)业务结束。
如图5所示,本发明实施例还提供一种服务器,包括:
数据接收器,用于接收客户端发送的短信验证码请求,其中,短信验证码请求中包括请求参数及第一密文数据,第一密文数据由客户端基于密钥及至少部分请求参数形成,密钥由服务器颁发给客户端;
第一处理器,用于根据密钥及至少部分请求参数形成第二密文数据,根据第一密文数据及第二密文数据验证客户端身份,并在客户端身份验证通过的情况下,验证短信验证码请求是否有效,若短信验证码请求有效,则允许向请求参数中指定的通讯号码中发送第一短信验证码。
作为另一实施例,密钥由服务器基于非网络传输的方式颁发至客户端。
作为另一实施例,基于密钥及至少部分请求参数形成第二密文数据,包括:
调用第一加密接口对至少部分请求参数加密,得到第二密文数据,其中,第一加密接口的数据加密方式与第二加密接口的数据加密方式相匹配,第二加密接口为客户端在形成第一密文数据时调用的加密接口。
作为另一实施例,密钥被分别固定在第一加密接口和第二加密接口中。
作为另一实施例,请求参数包括客户端本地时间戳和客户端唯一ID中的至少一个,第一密文数据及第二密文数据基于客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码而形成。
作为另一实施例,验证短信验证码请求是否有效,包括:
确定在当前时间点之前的预设时间段内是否向通讯号码发送过第二短信验证码,若否,则确定短信验证码请求的请求链接有效,若是,则确定短信验证码请求的请求链接无效。
作为另一实施例,验证短信验证码请求是否有效,包括:
确定服务器中是否存储有对应短信验证码请求的第一加密编码,第一加密编码为确定向通讯号码发送第二短信验证码的情况下,对第二短信验证码对应的短信验证码请求进行存储时生成的查询字段。
作为另一实施例,在允许向请求参数中指定的通讯号码中发送第一短信验证码之后,还包括:
调用通讯设备运营商将第一短信验证码发送至通讯号码中;
将短信验证码请求以指定格式进行存储,并生成用于标记短信验证码请求的第二加密编码。
作为另一实施例,还包括:
验证短信验证码请求是否过期。
应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
如图6所示,本发明实施例还提供一种电子设备,包括:
第二处理器,用于确定请求参数,并基于密钥以及至少部分请求参数形成第一密文数据,基于请求参数及第一密文数据形成短信验证码请求,其中,请求参数中包括用于接收第一短信验证码的通讯号码,密钥由服务器颁发给客户端;
发送器,用于向服务端发送短信验证码请求。
作为另一实施例,基于密钥以及至少部分请求参数形成第一密文数据,包括:
调用第二加密接口对至少部分请求参数加密,得到第一密文数据;其中,密钥被固定在第二加密接口中。
作为另一实施例,请求参数还包括客户端本地时间戳和客户端唯一ID中的至少一个;
基于密钥以及至少部分请求参数形成第一密文数据,包括:
对客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码进行加密,得到第一密文数据。
应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
本发明一实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的防止攻击的方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
本发明实施例还提供了一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可读指令,所述计算机可执行指令在被执行时使至少一个处理器执行诸如上文所述实施例中的方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
需要说明的是,本发明的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、天线、光缆、RF等等,或者上述的任意合适的组合。
应当理解,虽然本发明是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (15)
1.一种防止攻击的方法,应用于服务端,其特征在于,所述方法包括:
接收客户端发送的短信验证码请求,其中,所述短信验证码请求中包括请求参数及第一密文数据,所述第一密文数据由所述客户端基于密钥及至少部分请求参数形成,所述密钥由所述服务器颁发给所述客户端;
基于所述密钥及所述至少部分请求参数形成第二密文数据;
基于所述第一密文数据及所述第二密文数据验证所述客户端身份;
在所述客户端身份验证通过的情况下,验证所述短信验证码请求是否有效;
若所述短信验证码请求有效,则允许向所述请求参数中指定的通讯号码中发送第一短信验证码。
2.根据权利要求1所述的方法,其特征在于,所述密钥由所述服务器基于非网络传输的方式颁发至所述客户端。
3.根据权利要求1所述的方法,其特征在于,所述基于所述密钥及所述至少部分请求参数形成第二密文数据,包括:
调用第一加密接口对所述至少部分请求参数加密,得到所述第二密文数据,其中,所述第一加密接口的数据加密方式与第二加密接口的数据加密方式相匹配,所述第二加密接口为所述客户端在形成第一密文数据时调用的加密接口。
4.根据权利要求3所述的方法,其特征在于,所述密钥被分别固定在所述第一加密接口和所述第二加密接口中。
5.根据权利要求1所述的方法,其特征在于,所述请求参数包括客户端本地时间戳和客户端唯一ID中的至少一个,所述第一密文数据及所述第二密文数据基于所述客户端本地时间戳和客户端唯一ID中的至少一个,以及所述通讯号码而形成。
6.根据权利要求1所述的方法,其特征在于,所述验证所述短信验证码请求是否有效,包括:
确定在当前时间点之前的预设时间段内是否向所述通讯号码发送过第二短信验证码,若否,则确定所述短信验证码请求的请求链接有效,若是,则确定所述短信验证码请求的请求链接无效。
7.根据权利要求6所述的方法,其特征在于,所述验证所述短信验证码请求是否有效,包括:
确定所述服务器中是否存储有对应所述短信验证码请求的第一加密编码,所述第一加密编码为确定向所述通讯号码发送所述第二短信验证码的情况下,对所述第二短信验证码对应的短信验证码请求进行存储时生成的查询字段。
8.根据权利要求7所述的方法,其特征在于,在允许向所述请求参数中指定的通讯号码中发送所述第一短信验证码之后,还包括:
调用通讯设备运营商将所述第一短信验证码发送至所述通讯号码中;
将所述短信验证码请求以指定格式进行存储,并生成用于标记所述短信验证码请求的第二加密编码。
9.根据权利要求1所述的方法,其特征在于,还包括:
验证所述短信验证码请求是否过期。
10.一种防止攻击的方法,应用于客户端,其特征在于,所述方法包括:
确定请求参数,所述请求参数中包括用于接收第一短信验证码的通讯号码;
基于密钥以及至少部分请求参数形成第一密文数据,其中,所述密钥由所述服务器颁发给所述客户端;
基于所述请求参数及所述第一密文数据形成短信验证码请求;
向所述服务端发送所述短信验证码请求。
11.根据权利要求10所述的方法,其特征在于,所述基于密钥以及至少部分请求参数形成第一密文数据,包括:
调用第二加密接口对所述至少部分请求参数加密,得到所述第一密文数据;其中,所述密钥被固定在所述第二加密接口中。
12.根据权利要求10-11任一项所述的方法,其特征在于,所述请求参数还包括客户端本地时间戳和客户端唯一ID中的至少一个;
所述基于密钥以及至少部分请求参数形成第一密文数据,包括:
对所述客户端本地时间戳和客户端唯一ID中的至少一个,以及通讯号码进行加密,得到所述第一密文数据。
13.一种服务器,其特征在于,包括:
数据接收器,用于接收客户端发送的短信验证码请求,其中,所述短信验证码请求中包括请求参数及第一密文数据,所述第一密文数据由所述客户端基于密钥及至少部分请求参数形成,所述密钥由所述服务器颁发给所述客户端;
第一处理器,用于根据所述密钥及所述至少部分请求参数形成第二密文数据,根据所述第一密文数据及所述第二密文数据验证所述客户端身份,并在所述客户端身份验证通过的情况下,验证所述短信验证码请求是否有效,若所述短信验证码请求有效,则允许向所述请求参数中指定的通讯号码中发送第一短信验证码。
14.一种电子设备,其特征在于,包括:
第二处理器,用于确定请求参数,并基于密钥以及至少部分请求参数形成第一密文数据,基于所述请求参数及所述第一密文数据形成短信验证码请求,其中,所述请求参数中包括用于接收第一短信验证码的通讯号码,所述密钥由所述服务器颁发给所述客户端;
发送器,用于向所述服务端发送所述短信验证码请求。
15.一种存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-12中任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011451024.0A CN112566121B (zh) | 2020-12-09 | 2020-12-09 | 一种防止攻击的方法及服务器、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011451024.0A CN112566121B (zh) | 2020-12-09 | 2020-12-09 | 一种防止攻击的方法及服务器、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112566121A true CN112566121A (zh) | 2021-03-26 |
CN112566121B CN112566121B (zh) | 2023-03-24 |
Family
ID=75061822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011451024.0A Active CN112566121B (zh) | 2020-12-09 | 2020-12-09 | 一种防止攻击的方法及服务器、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112566121B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110677431A (zh) * | 2019-10-14 | 2020-01-10 | 云深互联(北京)科技有限公司 | 一种双向验证的方法和装置 |
CN116528243A (zh) * | 2023-06-29 | 2023-08-01 | 北京华翔联信科技股份有限公司 | 一种用户识别方法、装置及电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104768139A (zh) * | 2015-02-28 | 2015-07-08 | 北京奇艺世纪科技有限公司 | 一种短信发送的方法及装置 |
CN105142146A (zh) * | 2015-09-24 | 2015-12-09 | 上海斐讯数据通信技术有限公司 | 一种wifi热点接入的认证方法、装置及系统 |
CN107645471A (zh) * | 2016-07-20 | 2018-01-30 | 航天信息股份有限公司 | 一种用于移动终端用户身份认证的方法和系统 |
CN108243172A (zh) * | 2016-12-27 | 2018-07-03 | 武汉斗鱼网络科技有限公司 | 一种发送验证信息的方法及系统 |
CN108900479A (zh) * | 2018-06-12 | 2018-11-27 | 泰康保险集团股份有限公司 | 短信验证码获取方法及装置 |
CN108989263A (zh) * | 2017-05-31 | 2018-12-11 | 中国移动通信集团公司 | 短信验证码攻击防护方法、服务器和计算机可读存储介质 |
CN109660556A (zh) * | 2019-01-11 | 2019-04-19 | 平安科技(深圳)有限公司 | 基于信息安全的用户登陆方法、装置、设备和存储介质 |
CN111327615A (zh) * | 2020-02-21 | 2020-06-23 | 浙江德迅网络安全技术有限公司 | 一种cc攻击防护方法及其系统 |
CN111417122A (zh) * | 2020-03-25 | 2020-07-14 | 杭州迪普科技股份有限公司 | 一种防范攻击方法及装置 |
-
2020
- 2020-12-09 CN CN202011451024.0A patent/CN112566121B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104768139A (zh) * | 2015-02-28 | 2015-07-08 | 北京奇艺世纪科技有限公司 | 一种短信发送的方法及装置 |
CN105142146A (zh) * | 2015-09-24 | 2015-12-09 | 上海斐讯数据通信技术有限公司 | 一种wifi热点接入的认证方法、装置及系统 |
CN107645471A (zh) * | 2016-07-20 | 2018-01-30 | 航天信息股份有限公司 | 一种用于移动终端用户身份认证的方法和系统 |
CN108243172A (zh) * | 2016-12-27 | 2018-07-03 | 武汉斗鱼网络科技有限公司 | 一种发送验证信息的方法及系统 |
CN108989263A (zh) * | 2017-05-31 | 2018-12-11 | 中国移动通信集团公司 | 短信验证码攻击防护方法、服务器和计算机可读存储介质 |
CN108900479A (zh) * | 2018-06-12 | 2018-11-27 | 泰康保险集团股份有限公司 | 短信验证码获取方法及装置 |
CN109660556A (zh) * | 2019-01-11 | 2019-04-19 | 平安科技(深圳)有限公司 | 基于信息安全的用户登陆方法、装置、设备和存储介质 |
CN111327615A (zh) * | 2020-02-21 | 2020-06-23 | 浙江德迅网络安全技术有限公司 | 一种cc攻击防护方法及其系统 |
CN111417122A (zh) * | 2020-03-25 | 2020-07-14 | 杭州迪普科技股份有限公司 | 一种防范攻击方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110677431A (zh) * | 2019-10-14 | 2020-01-10 | 云深互联(北京)科技有限公司 | 一种双向验证的方法和装置 |
CN116528243A (zh) * | 2023-06-29 | 2023-08-01 | 北京华翔联信科技股份有限公司 | 一种用户识别方法、装置及电子设备及存储介质 |
CN116528243B (zh) * | 2023-06-29 | 2023-09-08 | 北京华翔联信科技股份有限公司 | 一种用户识别方法、装置及电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112566121B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1359491A1 (en) | Methods for remotely changing a communications password | |
CN108243176B (zh) | 数据传输方法和装置 | |
CN108322416B (zh) | 一种安全认证实现方法、装置及系统 | |
CN110933078B (zh) | 一种h5未登录用户会话跟踪方法 | |
CN110213195B (zh) | 一种登录认证方法、服务器及用户终端 | |
CN112989426B (zh) | 授权认证方法及装置、资源访问令牌的获取方法 | |
CN113225352B (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN111130798B (zh) | 一种请求鉴权方法及相关设备 | |
CN112968910B (zh) | 一种防重放攻击方法和装置 | |
CN112566121B (zh) | 一种防止攻击的方法及服务器、存储介质 | |
TW200421812A (en) | System and method for securing digital messages | |
CN112765626A (zh) | 基于托管密钥授权签名方法、装置、系统及存储介质 | |
CN114244508A (zh) | 数据加密方法、装置、设备及存储介质 | |
CN112689014A (zh) | 一种双全工通信方法、装置、计算机设备和存储介质 | |
JP2022534677A (ja) | ブロックチェーンを使用するオンラインアプリケーションおよびウェブページの保護 | |
CN111249740A (zh) | 一种资源数据的访问方法及系统 | |
CN110572392A (zh) | 一种基于Hyperledger网络的身份认证方法 | |
CN114070568A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN112910867B (zh) | 一种受信任的设备访问应用的双重验证方法 | |
CN110336773B (zh) | IoT设备数据的可信性保障系统、验证方法及存储介质 | |
CN115473655B (zh) | 接入网络的终端认证方法、装置及存储介质 | |
CN108900595B (zh) | 访问云存储服务器数据的方法、装置、设备及计算介质 | |
CN110035035B (zh) | 一种单点登录的二次认证方法及系统 | |
CN115442132A (zh) | 客户端与服务端数据加密传输的方法、装置及存储介质 | |
CN113079506B (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 | ||
CB02 | Change of applicant information |
Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing Applicant after: Beijing Shendun Technology Co.,Ltd. Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |