CN108306937B - 短信验证码的发送方法、获取方法、服务器及存储介质 - Google Patents
短信验证码的发送方法、获取方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN108306937B CN108306937B CN201711482517.9A CN201711482517A CN108306937B CN 108306937 B CN108306937 B CN 108306937B CN 201711482517 A CN201711482517 A CN 201711482517A CN 108306937 B CN108306937 B CN 108306937B
- Authority
- CN
- China
- Prior art keywords
- preset
- short message
- browser
- signature
- verification code
- 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.)
- Active
Links
Images
Classifications
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/42—User authentication using separate channels for security data
- G06F21/43—User authentication using separate channels for security data wireless channels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
- H04W4/14—Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2133—Verifying human interaction, e.g., Captcha
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种短信验证码的发送方法、获取方法、服务器及存储介质,该方法包括:在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,其中,第一请求用于获取包含获取短信验证码操作的页面;接收浏览器发送的第二请求,其中,第二请求用于获取携带有验证码的短消息,携带有浏览器执行预设动态脚本生成的页面签名和预定号码;检测页面签名是否与预设签名相同;在页面签名与预设签名相同的情况下,向预定号码发送携带有验证码的短消息。本发明全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作。
Description
技术领域
本发明涉及通讯领域,特别是涉及一种短信验证码的发送方法、获取方法、服务器及存储介质。
背景技术
随着web页面短信验证码登录、注册等手机号绑定功能的应用广泛,“短信轰炸机”也随之出现,“短信轰炸机”收集发送短信的URL,通过不用浏览器打开正常短信发送页面,直接用程序请求URL,给指定的手机号发送骚扰短信。当“短信轰炸机”收集足够多的URL后,可以短时间内给某一手机号发送大量短信,影响用户正常使用手机。因存在付费使用的情况,因此流行广泛危害较大。
目前企业预防短信轰炸机的手段主要有:图片验证码方案、进度条滑动方案等方案。
现有图片验证码方案中,请求短信验证码的web页面中,需有一个图片,用户再点击请求短信验证码按钮之前或之后,需在某一输入框中,输入图片中的内容,后端接到请求后,需判断用户输入的图片内容是否正确。如果用户输入的图片内容正确,认为用户是正常打开web页面,请求短信发送,则给指定手机号推送短信验证码。若用户输入的内容,与图片中的内容不符,则不推送短信。
上述验证码方案中,需要在用户感知的情况下,识别图片中的内容,并且填入对应的内容。用户有感知,并且体验较差。为了增加被识别的可能性,图片内容经过扭曲,导致正常用户也输入错误。因有一定复杂性,导致流量下降。
在现有进度条滑动块方案中,请求短信验证码的web页面中,需有一个进度条,用户再点击请求短信验证码按钮之前或之后,需要将进度条中的滑动块,拖到指定的位置区域。后端根据用户的拖动情况,进行校验。若判定为用户拖动到指定区域,则校验通过,发送短信验证码,否则不发送验证码。
上述进度条滑动块方案中,开发难度较高,实现较为复杂。用户需拖动滑动块,到指定的区域,指定区域较小,若多拖动一点或少拖动一点,都会导致校验失败。此方案,也是在用户感知的情况下预防短信轰炸机。
因此,现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
发明内容
本发明提供一种短信验证码的发送方法、获取方法、服务器及存储介质,用以解决现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
为解决上述技术问题,一方面,本发明提供一种短信验证码的发送方法,包括:在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,其中,所述第一请求用于获取包含获取短信验证码操作的页面;接收所述浏览器发送的第二请求,其中,所述第二请求用于获取携带有验证码的短消息,携带有所述浏览器执行所述预设动态脚本生成的页面签名和预定号码;检测所述页面签名是否与预设签名相同;在所述页面签名与所述预设签名相同的情况下,向所述预定号码发送携带有验证码的短消息。
可选的,在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,包括:在接收到浏览器发送的第一请求时,从预设函数库中随机获取N个预设函数,从预设结构元素库中随机获取M个预设结构元素,其中,N和M均为大于或等于1的正整数;根据所述N个预设函数生成预设执行对象,并根据所述预设执行对象和所述M个预设结构元素生成所述预设动态脚本;向浏览器发送所述预设动态脚本。
可选的,所述预设执行对象为Javascript对象,所述预设结构元素为HTML文件。
可选的,检测所述页面签名是否与预设签名相同之前,还包括:确定所述预设动态脚本中的执行对象,并查找所述执行对象对应的所述预设签名。
可选的,在所述预设动态脚本的执行对象包括多个预设函数的情况下,检测所述页面签名是否与预设签名相同,包括:获取每个页面签名,并检测每个页面签名是否均与所述页面签名对应的预设签名相同。
另一方面,本发明还提供一种短信验证码的获取方法,包括:浏览器向服务器发送第一请求,其中,所述第一请求用于获取包含获取短信验证码操作的页面;所述浏览器接收来自所述服务器的预设动态脚本,并执行所述预设动态脚本,生成页面签名;所述浏览器向所述服务器发送携带有所述页面签名和预定号码的第二请求,以使所述服务器根据所述页面签名向所述预定号码发送携带有验证码的短消息,其中,所述第二请求用于获取携带有验证码的短消息。
可选的,所述浏览器接收来自所述服务器的预设动态脚本,并执行所述预设动态脚本,生成页面签名,包括:所述浏览器获取所述预设动态脚本的执行对象和结构元素;所述浏览器添加所述结构元素,并在添加了所述结构元素的浏览器中执行所述执行对象,生成所述页面签名。
可选的,所述执行对象为Javascript对象,所述结构元素为HTML文件。
另一方面,本发明还提供一种服务器,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述短信验证码的发送方法的步骤。
另一方面,本发明还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述短信验证码的获取方法的步骤。
本发明全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作,解决了现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
附图说明
图1是本发明第一实施例中短信验证码的发送方法的流程图;
图2是本发明第二实施例中短信验证码的发送方法的流程图;
图3是本发明第三实施例中短信验证码的发送方法的流程图;
图4是本发明第四实施例中短信验证码的发送方法的流程图;
图5是本发明第五实施例中短信验证码的获取方法的流程图;
图6是本发明第七实施例中短信验证码的发送方法的流程图。
具体实施方式
为了解决现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低;本发明提供了一种短信验证码的发送方法、获取方法、服务器及存储介质,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明第一实施例提供了一种短信验证码的发送方法,该方法的流程如图1所示,包括步骤S101至S104:
S101,在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,其中,第一请求用于获取包含获取短信验证码操作的页面。
本实施例中服务器侧在接收到浏览器发送的第一请求时,会将预先设置好的预设动态脚本推送至浏览器,该预设动态脚本可以是服务器预先存储的多个动态脚本中的一个,之所以称之为动态脚本,就是发送给浏览器的脚本并不确定是哪一个脚本,可以是存储的任何一个动态脚本。
S102,接收浏览器发送的第二请求,其中,第二请求用于获取携带有验证码的短消息,携带有浏览器执行预设动态脚本生成的页面签名和预定号码。
当浏览器获取短信验证码操作的页面时,用户会点击浏览器的获取验证码按键,则会发送第二请求。当服务器接收到该第二请求时,会获取到该第二请求中携带的用于验证是否为短信轰炸机的页面签名和用于接收短信验证码的预定号码。
S103,检测页面签名是否与预设签名相同。
预设签名为服务器发送的预设动态脚本在服务器侧执行后得到的签名,该预设签名可以是服务器预先就将所有的动态脚本分别执行后得到的签名进行了存储,在发送了预设动态脚本后,就将该预设动态脚本对应的预设签名提取出来了,当然,也可以使服务器确定了要发送的预设动态脚本后,在将预设动态脚本发送至浏览器器后,在服务器上模拟执行该预设动态脚本,进而得到的预设签名。
S104,在页面签名与预设签名相同的情况下,向预定号码发送携带有验证码的短消息。
当验证了浏览器发送的页面签名和预设签名相同时,则可以认定是真正的用户在操作网页而请求获取短信验证码,就可以向预定号码发送携带有验证码的短消息,以便用户在接收到该验证码后可以继续进行后续操作。
本发明实施例在给浏览器发送获取短信验证码操作的页面时,在该页面中增加了预设动态脚本,并将浏览器执行该预设动态脚本后得到的页面签名与预设签名进行比较,通过比较签名是否一致来确认是否为用户的真实操作。
本发明实施例全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作,解决了现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
本发明第二实施例提供了一种短信验证码的发送方法,该方法的流程如图2所示,包括步骤S201至S206:
S201,在接收到浏览器发送的第一请求时,服务器向浏览器发送预设动态脚本,其中,第一请求用于获取包含获取短信验证码操作的页面。其中,向浏览器发送预设动态脚本的过程如下:
首先,从预设函数库中随机获取N个预设函数,从预设结构元素库中随机获取M个预设结构元素,其中,N和M均为大于或等于1的正整数。
本实施例预先设置了一个预设函数库,其存储了大量的函数,还预先设置了预设结构元素库,其中存储了大量的结构元素,这些结构元素和函数都是生成动态脚本的基础。
其次,根据N个预设函数生成预设执行对象,并根据预设执行对象和M个预设结构元素生成预设动态脚本。
本实施例生成动态脚本时,是根据随机选择的预设函数生成预设执行对象,并根据预设执行对象和随机选择的M个预设结构元素生成动态脚本,整个动态脚本的生成过程随机性强。
最后,在接收到浏览器发送的第一请求时,会将随机生成的预设动态脚本推送至浏览器。
上述过程由于是在接收到第一请求后随机生成的预设动态脚本,浏览器执行的也是之前未有过的脚本,不会被任何短信轰炸机获取到预设动态脚本,保密性较强。
S202,服务器执行预设动态脚本,生成预设签名。
S203,服务器接收浏览器发送的第二请求,其中,第二请求用于获取携带有验证码的短消息,携带有浏览器执行预设动态脚本生成的页面签名和预定号码。
当浏览器获取短信验证码操作的页面时,用户会点击浏览器的获取验证码按键,则会发送第二请求。当服务器接收到该第二请求时,会获取到该第二请求中携带的用于验证是否为短信轰炸机的页面签名和用于接收短信验证码的预定号码。
S204,检测页面签名是否与预设签名相同。在页面签名与预设签名相同的情况下,执行S205,否则执行S206。
预设签名为服务器发送的预设动态脚本在服务器侧执行后得到的签名,该预设签名可以是服务器预先就将所有的动态脚本分别执行后得到的签名进行了存储,在发送了预设动态脚本后,就将该预设动态脚本对应的预设签名提取出来了,当然,也可以使服务器确定了要发送的预设动态脚本后,在将预设动态脚本发送至浏览器器后,在服务器上模拟执行该预设动态脚本,进而得到的预设签名。
S205,向预定号码发送携带有验证码的短消息。
当验证了浏览器发送的页面签名和预设签名相同时,则可以认定是真正的用户在操作网页而请求获取短信验证码,就可以向预定号码发送携带有验证码的短消息,以便用户在接收到该验证码后可以继续进行后续操作。
S206,禁止发送携带有验证码的短消息。
本发明实施例在给浏览器发送获取短信验证码操作的页面时,在该页面中增加了预设动态脚本,并将浏览器执行该预设动态脚本后得到的页面签名与预设签名进行比较,通过比较签名是否一致来确认是否为用户的真实操作。
本发明实施例全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作,解决了现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
本发明第三实施例提供了一种短信验证码的发送方法,该方法的流程如图3所示,包括步骤S301至S308:
S301,从预设函数库中随机获取N个预设函数,从预设结构元素库中随机获取M个预设结构元素,其中,N和M均为大于或等于1的正整数。
本实施例预先设置了一个预设函数库,其存储了大量的函数,还预先设置了预设结构元素库,其中存储了大量的结构元素,这些结构元素和函数都是生成动态脚本的基础。
S302,根据N个预设函数生成预设执行对象,并根据预设执行对象和M个预设结构元素生成预设动态脚本。
本实施例生成动态脚本时,是根据随机选择的预设函数生成预设执行对象(例如Javascript对象),并根据预设执行对象和随机选择的M个预设结构元素(例如HTML文件)生成动态脚本,整个动态脚本的生成过程随机性强。
该过程是预先就已经生成了多个动态脚本,后续当接收到浏览器发送的第一请求时,随机选择一个动态脚本作为预设动态脚本发送给浏览器。
S303,在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,其中,第一请求用于获取包含获取短信验证码操作的页面。
本实施例中服务器侧在接收到浏览器发送的第一请求时,会将预先设置好的预设动态脚本推送至浏览器,该预设动态脚本可以是服务器预先存储的多个动态脚本中的一个,之所以称之为动态脚本,就是发送给浏览器的脚本并不确定是哪一个脚本,可以是存储的任何一个动态脚本。
S304,接收浏览器发送的第二请求,其中,第二请求用于获取携带有验证码的短消息,携带有浏览器执行预设动态脚本生成的页面签名和预定号码。
当浏览器获取短信验证码操作的页面时,用户会点击浏览器的获取验证码按键,则会发送第二请求。当服务器接收到该第二请求时,会获取到该第二请求中携带的用于验证是否为短信轰炸机的页面签名和用于接收短信验证码的预定号码。
S305,确定预设动态脚本中的执行对象,并查找执行对象对应的预设签名。
S306,检测页面签名是否与预设签名相同。在页面签名与预设签名相同的情况下,执行S307,否则执行S308。
预设签名为服务器发送的预设动态脚本在服务器侧执行后得到的签名,该预设签名可以是服务器预先就将所有的动态脚本分别执行后得到的签名进行了存储,在发送了预设动态脚本后,就将该预设动态脚本对应的预设签名提取出来了,当然,也可以使服务器确定了要发送的预设动态脚本后,在将预设动态脚本发送至浏览器器后,在服务器上模拟执行该预设动态脚本,进而得到的预设签名。
S307,向预定号码发送携带有验证码的短消息。
当验证了浏览器发送的页面签名和预设签名相同时,则可以认定是真正的用户在操作网页而请求获取短信验证码,就可以向预定号码发送携带有验证码的短消息,以便用户在接收到该验证码后可以继续进行后续操作。
S308,禁止发送携带有验证码的短消息。
当用户打开包含获取短信验证码页面时,服务器会将动态脚本一起发送给浏览器;浏览器执行该预设动态脚本,并在发送验证码请求的时候,浏览器会把这个页面签名带给服务器;服务器对比页面签名和预设签名相同后,则发送验证码的短信。整个过程全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作。
本发明第四实施例提供了一种短信验证码的发送方法,该方法的流程如图4所示,包括步骤S401至S411:
S401,服务器从预设函数库中随机获取N个预设函数,从预设结构元素库中随机获取M个预设结构元素,其中,N和M均为大于或等于1的正整数。
本实施例预先设置了一个预设函数库,其存储了大量的函数,还预先设置了预设结构元素库,其中存储了大量的结构元素,这些结构元素和函数都是生成动态脚本的基础。
S402,服务器根据N个预设函数生成预设执行对象,并根据预设执行对象和M个预设结构元素生成预设动态脚本。
本实施例生成动态脚本时,是根据随机选择的预设函数生成预设执行对象(例如Javascript对象),并根据预设执行对象和随机选择的M个预设结构元素(例如HTML文件)生成动态脚本,整个动态脚本的生成过程随机性强。
该过程是预先就已经生成了多个动态脚本,后续当接收到浏览器发送的第一请求时,随机选择一个动态脚本作为预设动态脚本发送给浏览器。
S403,浏览器接收到用户点击获取包含获取短信验证码操作的页面的操作,发送第一请求至服务器。
S404,服务器向浏览器发送获取短信验证码操作的页面,并同时发送预设动态脚本。
S405,浏览器在接收到短信验证码操作的页面时,会执行该预设动态脚本,生成页面签名。
S406,浏览器接收到用户点击获取携带有验证码的短消息的操作时,发送用于获取携带有验证码的短消息的第二请求,将生成的页面签名携带在第二请求中一并发送至服务器。
S407,服务器接收浏览器发送的第二请求。第二请求用于获取携带有验证码的短消息,携带有浏览器执行预设动态脚本生成的页面签名和预定号码。
S408,服务器确定预设动态脚本中的执行对象,并查找执行对象对应的一组预设签名。
本实施例中的预设动态脚本的执行对象包括多个预设函数,因此,会对应着多个预设签名,在根据执行对象获取预设签名时,通常获取到的是一组预设签名。
S409,服务器检测每个页面签名是否均与页面签名对应的预设签名相同。在所有页面签名均与与其对应的预设签名相同的情况下,执行S410,否则执行S411。
S410,向预定号码发送携带有验证码的短消息。
当验证了浏览器发送的所有页面签名均与其对应的每个预设签名相同时,则可以认定是真正的用户在操作网页而请求获取短信验证码,就可以向预定号码发送携带有验证码的短消息,以便用户在接收到该验证码后可以继续进行后续操作。
S411,禁止发送携带有验证码的短消息。
当用户打开包含获取短信验证码页面时,服务器会将动态脚本一起发送给浏览器;浏览器执行该预设动态脚本,并在发送验证码请求的时候,浏览器会把这个页面签名带给服务器;服务器对比页面签名和预设签名相同后,则发送验证码的短信。整个过程全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作。
本发明第五实施例提供了一种短信验证码的获取方法,该方法的流程如图5所示,包括步骤S501至S503:
S501,浏览器向服务器发送第一请求,其中,第一请求用于获取包含获取短信验证码操作的页面。实现过程中,当浏览器接收到用户点击获取包含获取短信验证码操作的页面的操作,就会向服务器发送第一请求。
S502,浏览器接收来自服务器的预设动态脚本,并执行预设动态脚本,生成页面签名。
本实施例中服务器侧在接收到浏览器发送的第一请求时,会将预先设置好的预设动态脚本推送至浏览器,该预设动态脚本可以是服务器预先存储的多个动态脚本中的一个,之所以称之为动态脚本,就是发送给浏览器的脚本并不确定是哪一个脚本,可以是存储的任何一个动态脚本。
具体实现时,浏览器获取预设动态脚本的执行对象(例如Javascript对象)和结构元素(例如HTML文件);浏览器添加结构元素,并在添加了结构元素的浏览器中执行执行对象,生成页面签名。
S503,浏览器向服务器发送携带有页面签名和预定号码的第二请求,以使服务器根据页面签名向预定号码发送携带有验证码的短消息,其中,第二请求用于获取携带有验证码的短消息。
本发明实施例全程无需用户手动参与验证,用户只需执行正常获取短信验证码的操作即可,对用户没有任何操作要求,用户体验较好,完全避免了短信轰炸机的轰炸操作,解决了现有技术的如下问题:现有预防短信轰炸机的方式都需要用户手动操作,操作要求较高,极容易导致验证码输入错误,用户体验较低。
本发明第六实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
S01,浏览器向服务器发送第一请求,其中,第一请求用于获取包含获取短信验证码操作的页面。
实现过程中,当浏览器接收到用户点击获取包含获取短信验证码操作的页面的操作,就会向服务器发送第一请求。
S02,浏览器接收来自服务器的预设动态脚本,并执行预设动态脚本,生成页面签名。
本实施例中服务器侧在接收到浏览器发送的第一请求时,会将预先设置好的预设动态脚本推送至浏览器,该预设动态脚本可以是服务器预先存储的多个动态脚本中的一个,之所以称之为动态脚本,就是发送给浏览器的脚本并不确定是哪一个脚本,可以是存储的任何一个动态脚本。
具体实现时,浏览器获取预设动态脚本的执行对象(例如Javascript对象)和结构元素(例如HTML文件);浏览器添加结构元素,并在添加了结构元素的浏览器中执行执行对象,生成页面签名。
S03,浏览器向服务器发送携带有页面签名和预定号码的第二请求,以使服务器根据页面签名向预定号码发送携带有验证码的短消息,其中,第二请求用于获取携带有验证码的短消息。
本实施例在用户无感知的情况下,避免“短信轰炸机”此类软件收集短信验证码发送URL给用户造成大量骚扰的问题,用户体验较好。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本发明第七实施例提供了一种服务器,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现上述第一实施例至第四实施例中任一个实施例提供的短信验证码的发送方法的步骤,该方法流程如下:
在浏览器打开包含短信验证页面时,向浏览器推送一组动态javascript脚本。每次请求,推送的javascript变量名、函数名、计算结果都不相同。当正常用户请求短信验证时,浏览器会执行这套javascript代码生成一组页面签名,并附带到服务器端。服务器端对比用户请求携带的这套页面签名结果是否符合推送的动态javascript脚本执行结果。如对比结果相同,认为是合法的浏览器打开页面,正常点击页面请求短信认证,则推送短信。若对比结果不同,则不推送短信,达到防止被短信轰炸机利用该URL的目的。本实施例的流程如图6所示,包括如下步骤:
S1,浏览器请求打开web页面,即请求打开包括获取短信验证码的页面。
S2,浏览器页面通过ajax的方式,向服务器请求一组校验数据。
S3,服务器返回给客户端web页面和校验数据,校验数据包括:请求版本号、Javascript对(Javascript对象内包含若干方法,方法间相互调用)、一组html页面元素(通常是一组input隐藏域,有若干属性)、Javascript对象的入口函数。
该过程需要服务器侧有一套动态生成Javascript对象、html页面元素的代码,并且在生成Javascript对象、html页面元素的过程中,计算出页面签名;把生成的Javascript对象、html页面元素、Javascript对象对应html页面元素的签名结果,保存到内存中。
当然,也可以提前写好一些Javascript对象、抓取html页面中的各种元素,来进行签名。每次请求页面时,随机获取一个Javascript对象及html页面元素,推送到web页面,进行签名。但因提前写好的Javascript对象和html元素是有限的,容易被攻击者拿到所有的Javascript对象和html页面元素,从而模拟出页面的签名结果。因此,本实施例采用的是在浏览器请求时动态生成,而并非预先设置。
S4,浏览器收到服务器数据后,将Javascript对象转化为可执行的Javascript对象(通常是eval函数),将一组html页面元素(通常是一组input隐藏域,有若干属性),添加到页面的form表单中。
S5,浏览器执行Javascript对象的入口函数调用Javascript对象内的一系列函数,生成N个签名值,签名值将赋值到html页面元素包含的一组<input>隐藏域中。
S6,用户点击获取手机验证码按钮,浏览器Ajax异步提交form表单,将页面html页面元素中的值,提交到服务器。Form表单中应该包含:后台传递的html页面元素(input隐藏域)、请求短信的手机号、请求版本号。
S7,服务器根据请求版本号对应的Javascript对象,找到在服务器上存储该Javascript对象对应的签名值。
S8,服务器校验html页面元素(input隐藏域)的签名值与服务器上存储的签名值是否一致。如果一致,则执行S9,否则执行S10。
S9,直接发送短信验证码到指定手机号。
S10,给页面响应的提示,重新尝试等非正常流程。
本发明实施例通过服务器生成非固定可执行代码,在客户端执行服务器端生成的非固定代码,并且将客户端执行的结果,提交到服务器做结果认证,解决非正常客户端检测机制。使用本发明实施例后,用户在请求短信验证码时,在不需要额外操作的情况下,可以获取短信验证码;并且,不会被“短信轰炸机”利用,可操作性强。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种短信验证码的发送方法,其特征在于,包括:
服务器在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,其中,所述第一请求用于获取包含获取短信验证码操作的页面;
服务器接收所述浏览器发送的第二请求,其中,所述第二请求用于获取携带有验证码的短消息,携带有所述浏览器执行所述预设动态脚本生成的页面签名和预定号码;
服务器检测所述页面签名是否与预设签名相同;
在所述页面签名与所述预设签名相同的情况下,服务器向所述预定号码发送携带有验证码的短消息。
2.如权利要求1所述的发送方法,其特征在于,在接收到浏览器发送的第一请求时,向浏览器发送预设动态脚本,包括:
在接收到浏览器发送的第一请求时,从预设函数库中随机获取N个预设函数,从预设结构元素库中随机获取M个预设结构元素,其中,N和M均为大于或等于1的正整数;
根据所述N个预设函数生成预设执行对象,并根据所述预设执行对象和所述M个预设结构元素生成所述预设动态脚本;
向浏览器发送所述预设动态脚本。
3.如权利要求2所述的发送方法,其特征在于,所述预设执行对象为Javascript对象,所述预设结构元素为HTML文件。
4.如权利要求1至所述的发送方法,其特征在于,检测所述页面签名是否与预设签名相同之前,还包括:
确定所述预设动态脚本中的执行对象,并查找所述执行对象对应的所述预设签名。
5.如权利要求1至4中任一项所述的发送方法,其特征在于,在所述预设动态脚本的执行对象包括多个预设函数的情况下,检测所述页面签名是否与预设签名相同,包括:
获取每个页面签名,并检测每个页面签名是否均与所述页面签名对应的预设签名相同。
6.一种短信验证码的获取方法,其特征在于,包括:
浏览器向服务器发送第一请求,其中,所述第一请求用于获取包含获取短信验证码操作的页面;
所述浏览器接收来自所述服务器的预设动态脚本,并执行所述预设动态脚本,生成页面签名;
所述浏览器向所述服务器发送携带有所述页面签名和预定号码的第二请求,以使所述服务器根据所述页面签名向所述预定号码发送携带有验证码的短消息,其中,所述第二请求用于获取携带有验证码的短消息。
7.如权利要求6所述的获取方法,其特征在于,所述浏览器接收来自所述服务器的预设动态脚本,并执行所述预设动态脚本,生成页面签名,包括:
所述浏览器获取所述预设动态脚本的执行对象和结构元素;
所述浏览器添加所述结构元素,并在添加了所述结构元素的浏览器中执行所述执行对象,生成所述页面签名。
8.如权利要求7所述的获取方法,其特征在于,所述执行对象为Javascript对象,所述结构元素为HTML文件。
9.一种服务器,至少包括存储器、处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器在执行所述存储器上的计算机程序时实现权利要求1至5中任一项所述短信验证码的发送方法的步骤。
10.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求6至8中任一项所述短信验证码的获取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711482517.9A CN108306937B (zh) | 2017-12-29 | 2017-12-29 | 短信验证码的发送方法、获取方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711482517.9A CN108306937B (zh) | 2017-12-29 | 2017-12-29 | 短信验证码的发送方法、获取方法、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108306937A CN108306937A (zh) | 2018-07-20 |
CN108306937B true CN108306937B (zh) | 2022-02-25 |
Family
ID=62867749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711482517.9A Active CN108306937B (zh) | 2017-12-29 | 2017-12-29 | 短信验证码的发送方法、获取方法、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306937B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112448931B (zh) * | 2019-09-02 | 2023-12-05 | 北京京东尚科信息技术有限公司 | 网络劫持监控方法和装置 |
CN114124455B (zh) * | 2021-10-22 | 2023-05-05 | 中国联合网络通信集团有限公司 | 短信验证方法及短信验证系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209158A (zh) * | 2012-01-12 | 2013-07-17 | 深圳市宇初网络技术有限公司 | 一种第三方验证方法以及系统 |
CN106775788A (zh) * | 2015-11-19 | 2017-05-31 | 中国科学院声学研究所 | 一种自动生成和运行JavaScript文件的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103002415B (zh) * | 2011-09-15 | 2015-08-26 | 阿里巴巴集团控股有限公司 | 一种通过短信发送验证码的方法和装置 |
CN103209074B (zh) * | 2012-01-16 | 2016-08-10 | 中国移动通信集团安徽有限公司 | 一种安全认证的方法、系统和短信处理装置 |
US9819687B2 (en) * | 2012-01-26 | 2017-11-14 | Qualcomm Incorporated | Reducing web browsing overheads with external code certification |
CN103365919B (zh) * | 2012-04-09 | 2018-07-31 | 北京京东尚科信息技术有限公司 | 网页解析容器及方法 |
CN106131000B (zh) * | 2016-06-30 | 2019-12-03 | 维沃移动通信有限公司 | 验证码填充方法及其移动终端 |
-
2017
- 2017-12-29 CN CN201711482517.9A patent/CN108306937B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209158A (zh) * | 2012-01-12 | 2013-07-17 | 深圳市宇初网络技术有限公司 | 一种第三方验证方法以及系统 |
CN106775788A (zh) * | 2015-11-19 | 2017-05-31 | 中国科学院声学研究所 | 一种自动生成和运行JavaScript文件的方法 |
Non-Patent Citations (1)
Title |
---|
"动态短信验证码安全防护方案";azhiaxiang;《百度文库》;20160214;第1-13页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108306937A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11038917B2 (en) | System and methods for building statistical models of malicious elements of web pages | |
CN109767271B (zh) | 基于区块链的抽奖方法和设备 | |
CN106339613B (zh) | 一种应用数据的处理方法、终端及服务器 | |
CN111400722B (zh) | 扫描小程序的方法、装置、计算机设备和存储介质 | |
CN106911687B (zh) | 一种页面构建控制方法和装置 | |
US9811661B1 (en) | System and method for protecting computers from unauthorized remote administration | |
US10496819B2 (en) | System and method of distributing files between virtual machines forming a distributed system for performing antivirus scans | |
WO2017152050A1 (en) | Deterministic reproduction of client/server computer state or output sent to one or more client computers | |
EP3297243A1 (en) | Trusted login method and device | |
US8650405B1 (en) | Authentication using dynamic, client information based PIN | |
CN109547426B (zh) | 业务响应方法及服务器 | |
CN108306937B (zh) | 短信验证码的发送方法、获取方法、服务器及存储介质 | |
CN114978752A (zh) | 弱密码检测方法、装置、电子设备及计算机可读存储介质 | |
US11586741B2 (en) | Dynamic communication architecture for testing computer security application features | |
CN104375935A (zh) | Sql注入攻击的测试方法和装置 | |
US20210073384A1 (en) | System and method for generating a representation of a web resource to detect malicious modifications of the web resource | |
CN107623664A (zh) | 一种密码输入方法及装置 | |
EP3246842B1 (en) | System and method of distributing files between virtual machines forming a distributed system for performing antivirus scans | |
CN107769929A (zh) | 验证码复杂程度调整方法和服务器 | |
CN108156071B (zh) | 向社区添加成员的方法、终端设备及计算机可读存储介质 | |
CN110177096A (zh) | 客户端认证方法、装置、介质和计算设备 | |
JP5640752B2 (ja) | 攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラム | |
CN108959879A (zh) | 应用程序的数据获取方法、装置、电子设备及服务器 | |
CN110572417B (zh) | 用于提供登录票据的方法、装置、服务器以及存储介质 | |
JP2020173507A (ja) | 認証仲介装置及び認証仲介プログラム |
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 |