CN117792785A - 微信小程序的访问控制方法、装置、设备及存储介质 - Google Patents
微信小程序的访问控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117792785A CN117792785A CN202410012093.3A CN202410012093A CN117792785A CN 117792785 A CN117792785 A CN 117792785A CN 202410012093 A CN202410012093 A CN 202410012093A CN 117792785 A CN117792785 A CN 117792785A
- Authority
- CN
- China
- Prior art keywords
- user
- access token
- identifier
- wechat applet
- identification
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012795 verification Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 235000014510 cooky Nutrition 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供一种微信小程序的访问控制方法、装置、设备及存储介质。该方法包括:接收用户的业务请求和接口入参标识;所述业务请求中携带访问令牌,所述用户处于已登录所述微信小程序的状态,所述访问令牌包括目标时间戳和用户标识,所述访问令牌用于所述微信小程序的客户端和服务端交互时识别所述用户;根据所述接口入参标识和预设有效时间策略对所述访问令牌进行有效性判断;在判断所述访问令牌无效时,使所述用户登出所述微信小程序。本申请的方法,提高了微信小程序用户数据的安全性。
Description
技术领域
本申请涉及信息安全技术领域,尤其涉及一种微信小程序的访问控制方法、装置、设备及存储介质。
背景技术
用户的安全登录是微信小程序的重要内容。用户登录微信小程序后,客户端可以通过登录过程中生成的访问令牌(token)与服务端进行认证交互。
目前,登录过程中生成的token是根据时间戳生成的,在客户端与服务端的认证交互过程中,客户端向服务端发起业务请求后,服务端仅校验业务请求中携带的token的时间戳过期与否,从而确定token是否有效,若校验token有效,则执行业务请求。
但这样仅通过时间对token的有效性进行校验的方式,容易使得微信小程序用户数据安全性较低。
发明内容
本申请提供一种微信小程序的访问控制方法、装置、设备及存储介质,用以解决微信小程序用户数据安全性较低的技术问题。
第一方面,本申请提供一种微信小程序的访问控制方法,该方法包括:
接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;
根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;
在判断访问令牌无效时,使用户登出微信小程序。
在一种可能的实现方式中,根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断,包括:
对访问令牌进行解析,得到用户标识和目标时间戳;
判断目标时间戳是否满足预设有效时间策略;预设有效时间策略为:当前时刻与目标时间戳之间的差值小于预设时长,当前时刻为判断目标时间戳是否满足预设有效时间策略时对应的时刻;
判断用户标识与接口入参标识是否一致;
若目标时间戳满足预设有效时间策略,且用户标识与接口入参标识一致,则判断访问令牌有效;
若目标时间戳不满足预设有效时间策略,和/或用户标识与接口入参标识不一致,则判断访问令牌无效。
在一种可能的实现方式中,在接收用户的业务请求之前,方法还包括:
获取用户针对于微信小程序的专属标识;
判断预设数据表中是否存在专属标识,得到判断结果;
根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,将访问令牌发送到微信小程序的客户端。
在一种可能的实现方式中,目标时间戳包括第一时间戳或第二时间戳,根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,包括:
若预设数据表中存在专属标识,则从预设数据表中获取专属标识对应的用户标识,并根据第一时间戳和用户标识生成用户的访问令牌;
若预设数据表中不存在专属标识,则获取用户的注册凭证,根据注册凭证得到用户标识,根据第二时间戳和用户标识生成用户的访问令牌,并将用户标识和专属标识存入预设数据表中。
在一种可能的实现方式中,根据注册凭证得到用户标识,包括:
将注册凭证发送到微信接口服务,以使微信接口服务对注册凭证的合法性和有效性进行校验,在校验通过时返回用户标识的加密信息;
接收微信接口服务返回的加密信息,对加密信息进行解密,得到用户标识。
在一种可能的实现方式中,获取用户针对于微信小程序的专属标识,包括:
获取登录凭证;
将登录凭证发送到微信接口服务,以使微信接口服务对登录凭证的合法性和有效性进行校验,在校验通过时返回专属标识;
接收微信接口服务返回的专属标识。
在一种可能的实现方式中,方法还包括:
在判断访问令牌有效时,向客户端返回业务请求的响应结果。
第二方面,本申请提供一种微信小程序的访问控制装置,包括接收模块,判断模块和登出模块,其中,
接收模块,用于接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;
判断模块,用于根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;
登出模块,用于在判断访问令牌无效时,使用户登出微信小程序。
在一种可能的实现方式中,判断模块,具体用于:
对访问令牌进行解析,得到用户标识和目标时间戳;
判断目标时间戳是否满足预设有效时间策略;预设有效时间策略为:当前时刻与目标时间戳之间的差值小于预设时长,当前时刻为判断目标时间戳是否满足预设有效时间策略时对应的时刻;
判断用户标识与接口入参标识是否一致;
若目标时间戳满足预设有效时间策略,且用户标识与接口入参标识一致,则判断访问令牌有效;
若目标时间戳不满足预设有效时间策略,和/或用户标识与接口入参标识不一致,则判断访问令牌无效。
在一种可能的实现方式中,装置还包括:
获取模块,用于获取用户针对于微信小程序的专属标识;
判别模块,用于判断预设数据表中是否存在专属标识,得到判断结果;
确定模块,用于根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,将访问令牌发送到微信小程序的客户端。
在一种可能的实现方式中,目标时间戳包括第一时间戳或第二时间戳,确定模块,具体用于:
若预设数据表中存在专属标识,则从预设数据表中获取专属标识对应的用户标识,并根据第一时间戳和用户标识生成用户的访问令牌;
若预设数据表中不存在专属标识,则获取用户的注册凭证,根据注册凭证得到用户标识,根据第二时间戳和用户标识生成用户的访问令牌,并将用户标识和专属标识存入预设数据表中。
在一种可能的实现方式中,确定模块,具体用于:
将注册凭证发送到微信接口服务,以使微信接口服务对注册凭证的合法性和有效性进行校验,在校验通过时返回用户标识的加密信息;
接收微信接口服务返回的加密信息,对加密信息进行解密,得到用户标识。
在一种可能的实现方式中,获取模块,具体用于:
获取登录凭证;
将登录凭证发送到微信接口服务,以使微信接口服务对登录凭证的合法性和有效性进行校验,在校验通过时返回专属标识;
接收微信接口服务返回的专属标识。
在一种可能的实现方式中,装置还包括:
响应模块,用于在判断访问令牌有效时,向客户端返回业务请求的响应结果。
第三方面,本申请提供一种电子设备,包括:处理器以及与处理器通信连接的存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得处理器执行如第一方面描述的微信小程序的访问控制方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当计算机执行指令被处理器执行时用于实现如第一方面描述的微信小程序的访问控制方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现如第一方面描述的微信小程序的访问控制方法。
第六方面,本申请提供一种芯片,芯片上存储有计算机程序,计算机程序被芯片执行时,实现如第一方面描述的微信小程序的访问控制方法。
在一种可能的实现方式中,芯片为芯片模组中的芯片。
本申请提供一种微信小程序的访问控制方法、装置、设备及存储介质,该方法通过接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;在判断访问令牌无效时,使用户登出微信小程序。从用户标识和时间两个维度一起对访问令牌进行有效性判断,这样,即使攻击者拿到了访问令牌,但若攻击者输入的接口入参标识与访问令牌中的用户标识不匹配,和/或,目标时间戳不满足预设有效时间策略,则攻击者也无法通过接口入参标识模拟用户发起请求,进而获取用户信息或者修改用户数据,因此提升了攻击者通过访问令牌获取或破坏微信小程序用户数据的难度,从而提高了微信小程序用户数据的安全性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种应用场景对应的网络架构示意图;
图2为本申请实施例提供的一种微信小程序的访问控制方法的流程示意图一;
图3为本申请实施例提供的一种微信小程序的访问控制方法的流程示意图二;
图4为本申请实施例提供的一种微信小程序的访问控制装置的结构示意图;
图5为本申请实施例提供的一种电子设备的硬件结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
用户的安全登录是微信小程序的重要内容。用户通过手机号登录微信小程序,获取到服务端生成的访问令牌(token)后,用户成功登录微信小程序,客户端可以通过登录过程中生成的访问令牌(token)与服务端进行认证交互。
目前,登录过程中生成的token是根据时间戳生成的,在客户端与服务端的认证交互过程中,客户端向服务端发起业务请求后,服务端仅校验业务请求中携带的token的时间戳过期与否,从而确定token是否有效,若校验token有效,则执行业务请求。
也就是说,在用户成功登录微信小程序后,若用户发起了业务请求,则服务端仅通过时间对token的有效性进行校验,但并没有对发起业务请求的用户进行校验,使得服务端无法准确识别发起业务请求的用户。因此若攻击者获取到token后,攻击者可以冒充用户向服务端发起请求以获取用户信息或者对用户拥有的微信小程序页面或数据执行功能性操作(如新增、删除、修改等操作),使得用户信息泄露或者重要数据丢失,从而导致微信小程序用户数据安全性较低。
示例性的,攻击者获取到的token后,可以通过抓包修改参数phonenumber为指定用户手机号加密值,并通过第三方工具调用接口向服务端发送携带该token的访问请求和该指定用户手机号加密值,若服务端校验出该token在有效时间内,则可以向攻击者返回该指定用户手机号加密值对应的登录微信小程序的用户信息。
有鉴于此,本申请实施例提供一种微信小程序的访问控制方法,该方法从用户标识和时间两个维度一起对业务请求中的token进行有效性判断,即既判断token是否在有效时间内,又判断发起访问请求的用户是否为token对应的用户,以判断token是否有效,在token无效时,使发起访问请求的用户登出。这样,即使攻击者拿到了token,但若攻击者指定的手机号与token中的用户标识不匹配,和/或,目标时间戳不满足预设有效时间策略,也就是token无效,则攻击者也无法通过其他指定的手机号模拟用户发起请求,进而获取用户信息或者修改重要数据,因此提升了攻击者通过token获取或破坏微信小程序用户数据的难度,从而提高了微信小程序用户数据的安全性。
示例性的,图1示出了本申请实施例提供的一种应用场景对应的网络架构示意图。如图1所示,该网络架构中包括终端设备100、开发者服务器200、微信服务器300。终端设备100中搭载有微信小程序客户端,微信服务器300中包括微信接口服务。终端设备100、与开发者服务器200之间、开发者服务器200与微信服务器300之间可以通信连接。
本申请实施例中,终端设备100也可以称为终端(terminal)、用户设备(userequipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobile phone)、个人计算机(personal computer,PC)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。
本申请实施例中,开发者服务器200和微信服务器300例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本申请实施例不对此进行限制。
在一种应用场景中,微信小程序客户端可以响应于用户的登录操作生成登录凭证(code),或者响应于用户的注册操作生成注册凭证;微信接口服务可以用于对登录凭证和注册凭证进行校验;开发者服务器200可以根据本申请实施例提供的微信小程序的访问控制方法实现微信小程序的安全访问。
示例性的,该微信小程序的访问控制方法可以包括:接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;在判断访问令牌无效时,使用户登出微信小程序。从用户标识和时间两个维度一起对访问令牌进行有效性判断,这样,即使攻击者拿到了访问令牌,但若攻击者输入的接口入参标识与访问令牌中的用户标识不匹配,和/或,目标时间戳不满足预设有效时间策略,则攻击者也无法通过接口入参标识模拟用户发起请求,进而获取用户信息或者修改重要数据,因此提升了攻击者通过token获取或破坏微信小程序用户数据的难度,从而提高了微信小程序用户数据的安全性。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的一种微信小程序的访问控制方法的流程示意图一。该方法的执行主体可以是图1所示的开发者服务器200,具体执行主体可以是根据实际场景确定,如图2所示,该方法可以包括:
S201、接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户。
其中,接口入参标识可以为参数phonenumber的值,参数phonenumber的默认值可以为空值。在没有被攻击,也就是用户通过微信小程序发起业务请求时,微信小程序使用用户在微信小程序注册的手机号的加密值赋值参数phonenumber,则开发者服务器接收到的接口入参标识为用户在微信小程序注册的手机号的加密值;在被攻击,也就是攻击者通过第三方工具发起业务请求时,第三方工具可以对参数phonenumber赋值,在攻击者不知道用户的用户标识时,攻击者只能使用参数phonenumber的默认值或者通过第三方工具以其他手机号的加密值对参数phonenumber赋值,则开发者服务器接收到的接口入参标识为空值或者为其他手机号的加密值。
其中,访问令牌可以是服务端生成的一串加密字符串、以作客户端进行请求的一个“令牌”。
其中,目标时间戳可以是确定访问令牌时对应的时刻。用户标识可以包括用户在微信小程序注册的手机号。
可能的实现中,终端设备在得到访问令牌后,可以将访问令牌进行缓存。例如,终端设备在得到访问令牌后,可以将访问令牌存储在cookie或者local storage中。在用户发起业务请求时,终端设备可以从cookie或者local storage中获取访问令牌,并将访问令牌封装在业务请求的请求头中,将业务请求发送到开发者服务器,无需再次带上用户名和密码,同时,开发者服务器还可以接收到接口入参标识。具体的终端设备得到访问令牌的方式将在后续步骤中详细介绍,在此不作赘述。
S202、根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断。
其中,预设有效时间策略可以用于判断访问令牌中的目标时间戳是否有效,示例性的,预设有效时间策略可以为:当前时刻与目标时间戳之间的差值小于预设时长,当前时刻为判断目标时间戳是否满足预设有效时间策略时对应的时刻。在其他可能的实现中,预设有效时间策略也可以为:目标时间戳早于预设时刻。
可能的实现中,开发者服务器接收到用户的业务请求和接口入参标识后,通过接口入参标识和预设有效时间策略分别对访问令牌中的用户标识和目标时间戳进行匹配,以判断访问令牌是否有效。
示例性的,在接口入参标识和用户标识匹配,且预设有效时间策略和目标时间戳匹配时,开发者服务器才判断访问令牌有效。这样,若攻击者修改参数phonenumber为其他任意手机号的加密值,则开发者服务器判断访问令牌无效,并使用户登出,以使攻击者无法访问用户和其他任意手机号对应的微信小程序页面,从而提高微信小程序用户数据的安全性。
S203、在判断访问令牌无效时,使用户登出微信小程序。
可能的实现中,开发者服务器判断访问令牌无效后,可以将第一报错信息发送到微信小程序客户端。微信小程序客户端可以基于第一报错信息使用户登出微信小程序,并可以将页面跳转到微信小程序登录页面,用户可以在登录页面输入用户名和密码进行重新登录。
综上,本申请实施例中,通过接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;在判断访问令牌无效时,使用户登出微信小程序。从用户标识和时间两个维度一起对访问令牌进行有效性判断,这样,即使攻击者拿到了访问令牌,但若攻击者输入的接口入参标识与访问令牌中的用户标识不匹配,和/或,目标时间戳不满足预设有效时间策略,则攻击者也无法通过接口入参标识模拟用户发起请求,进而获取用户信息或者修改用户数据,因此提升了攻击者通过token获取或破坏微信小程序用户数据的难度,从而提高了微信小程序用户数据的安全性。
在一种可能的实现中,上述步骤S201之前,该方法还可以包括:获取用户针对于微信小程序的专属标识;判断预设数据表中是否存在专属标识,得到判断结果;根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,将访问令牌发送到微信小程序的客户端。
其中,专属标识也可以称为openid,每个用户针对于每个微信小程序的openid是唯一的。例如,用户A对应微信小程序M的专属标识为openid-1,则即使用户A长时间不登录微信小程序M,甚至在微信小程序M注销,当用户A下次在微信小程序M登录或者注册时的专属标识仍为openid-1。对于不同微信小程序,同一用户的专属标识不同。
本申请实施例中,开发者服务器中维护了一张预设数据表,预设数据表中可以包括不同专属标识和不同用户标识之间的对应关系。
可能的实现中,用户可以在微信小程序客户端输入用户名和密码,以使开发者服务器获取用户的登录凭证。开发者服务器可以通过登录凭证换取用户针对于微信小程序的的专属标识,根据预设数据表中是否存在该专属标识判断该用户是否为该微信小程序的新用户,以便确定用户标识的获取方式。例如,若该用户不是该微信小程序的新用户,则可以从预设数据表中查询到该用户的专属标识,进而得到专属标识对应的用户标识;若该用户是该微信小程序的新用户,则需要触发微信小程序的注册页面,从而获取用户标识。
进一步的,开发者服务器可以通过json web token(JWT)技术对用户标识和目标时间戳加密生成用户的访问令牌,使得访问令牌中包括用户标识和目标时间戳,并将访问令牌发送到微信小程序的客户端。
在其他可能的实现中,预设数据表中还可以包括用户使用的终端设备的媒体存取控制(media access control,MAC)地址(也可以称为局域网地址、物理地址或硬件地址),不同用户标识对应不同的MAC地址,开发者服务器可以根据用户使用的终端设备的MAC地址、用户标识和目标时间戳确定访问令牌,使得访问令牌中包括用户使用的终端设备的MAC地址、用户标识和目标时间戳。后续开发者服务器对访问令牌校验时,还可以获取用户使用的终端设备的MAC地址,并将该MAC地址与访问令牌中的MAC地址进行匹配,若不一致,则判断访问令牌无效。也就是当攻击者使用的终端设备非用户使用的终端设备时,则使用户登出微信小程序,进一步的提升了攻击者基于访问令牌进行攻击的攻击难度,从而进一步的提升了微信小程序用户数据的安全性。
本申请实施例中,开发者服务器根据获取的专属标识和预设数据表判断专属标识对应的用户是否为新用户,以便开发者服务器根据判断结果获取用户标识,进而根据用户标识和目标时间戳确定用户的访问令牌,使得访问令牌中包括了用户标识和目标时间戳,这样,后续开发者服务器对访问令牌进行校验时,可以基于用户标识和目标时间戳进行校验,在一定程度上提高了攻击者基于访问令牌进行攻击的难度。
在一种可能的实现中,目标时间戳包括第一时间戳或第二时间戳,上述步骤根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,可以包括:
若预设数据表中存在专属标识,则从预设数据表中获取专属标识对应的用户标识,并根据第一时间戳和用户标识生成用户的访问令牌;若预设数据表中不存在专属标识,则获取用户的注册凭证,根据注册凭证得到用户标识,根据第二时间戳和用户标识生成用户的访问令牌,并将用户标识和专属标识存入预设数据表中。
其中,注册凭证中可以携带用户注册时输入的用户信息,用户信息可以包括用户标识、用户名、密码等。
其中,第一时间戳可以为开发者服务器从预设数据表中获取专属标识对应的用户标识后,即将生成访问令牌时对应的时刻;第二时间戳可以为根据注册凭证得到用户标识后,即将生成访问令牌时对应的时刻。
可能的实现中,若预设数据表中存在用户的专属标识,则表示该用户已在微信小程序注册过,因此,开发者服务器可以从预设数据表中查询该专属标识对应的用户标识,之后,通过JWT技术对第一时间戳和该用户标识进行加密,生成用户的访问令牌;若预设数据表中不存在用户的专属标识,则表示该用户为微信小程序的新用户,因此,开发者服务器可以触发用户的注册流程以获取用户的注册凭证。例如,开发者服务器可以向微信小程序返回提示消息,提示消息用于指示微信小程序跳转到注册页面,微信小程序接收到用户输入或授权的用户信息后,可以通过调用wx.getPhoneNumber()方法获取注册凭证,并请求后台注册接口,将注册凭证发送到开发者服务器,开发者服务器将注册凭证发送到微信接口服务进行校验,以获取用户标识,之后,通过JWT技术对第二时间戳和该用户标识进行加密,生成用户的访问令牌。
本申请实施例中,针对于新用户和旧用户,均获取用户标识,进而基于用户标识和第一时间戳,或者用户标识与第二时间戳生成访问令牌,以便后续校验访问令牌时可以基于时间和用户标识两个维度进行校验。
在上述实施例的基础上,为了更清楚的描述本申请的技术方案,示例性的,请参照图3,图3示出了本申请实施例提供的一种微信小程序的访问控制方法的流程示意图二。如图3所示,该方法可以包括:
S301、启动微信小程序客户端,微信小程序客户端确认访问令牌是否存在。
响应于用户触发微信小程序客户端的操作,终端设备启动微信小程序客户端。微信小程序客户端确认cookie或者local storage中是否存在用户的访问令牌,若是,则进行步骤S316;若否,则进行步骤S302。
S302、微信小程序客户端获取登录凭证。
其中,登录凭证也可以称为临时登录凭证,登录凭证是随时间变化的。
示例性的,微信小程序客户端接收到用户输入的用户名和密码后,调用wx.login()方法获取登录凭证。
S303、微信小程序客户端请求后台登录接口,将登录凭证发送到开发者服务器。
S304、开发者服务器将登录凭证发送到微信接口服务。
S305、微信接口服务对登录凭证的合法性和有效性进行校验,在校验通过时返回专属标识。进入步骤S307。
可能的实现中,微信接口服务可以通过auth.code2Session对登录凭证的合法性和有效性进行校验。
在对登录凭证的合法性和/或有效性的校验不通过时,该方法还可以包括S306:微信接口服务返回第二报错信息到开发者服务器,开发者服务器将第二报错信息发送到微信小程序客户端,第二报错信息可以用于指示微信小程序客户端拒绝该用户登录或者提示该用户重新登录。
S307、开发者服务器接收微信接口服务返回的专属标识。
S308、开发者服务器判断预设数据表中是否存在专属标识,得到判断结果。
若预设数据表中存在专属标识,则进行步骤S309;若预设数据表中不存在专属标识,则进行步骤S310。
S309、开发者服务器从预设数据表中获取专属标识对应的用户标识,并根据第一时间戳和用户标识生成用户的访问令牌。进行步骤S315。
S310、开发者服务器获取用户的注册凭证,将注册凭证发送到微信接口服务。
该步骤的具体实现可以参照上述实施例,在此不再赘述。
S311、微信接口服务对注册凭证的合法性和有效性进行校验,在校验通过时返回用户标识的加密信息。进入步骤S313。
可能的实现中,微信接口服务可以通过auth.code2Session对注册凭证的合法性和有效性进行校验。
在对注册凭证的合法性和/或有效性的校验不通过时,该方法还可以包括S312:微信接口服务返回第三报错信息到开发者服务器,开发者服务器将第三报错信息发送到微信小程序客户端,第三报错信息可以用于指示微信小程序客户端拒绝该用户注册或提示该用户重新注册。
S313、开发者服务器接收微信接口服务返回的加密信息,对加密信息进行解密,得到用户标识。
本申请实施例中,注册凭证的合法性和/或有效性校验通过后,开发者服务器才根据微信接口服务返回的加密信息获取用户标识,使得用户错误注册时注册不成功,有助于提升用户注册的规范性。
S314、开发者服务器根据第二时间戳和用户标识生成用户的访问令牌,并将用户标识和专属标识存入预设数据表中。
S315、开发者服务器将访问令牌发送到微信小程序的客户端。
此时,用于成功登录微信小程序。
S316、开发者服务器接收用户的业务请求和接口入参标识,业务请求中携带访问令牌。
该步骤与上述步骤S201相似或相同,在此不再赘述。
S317、开发者服务器对访问令牌进行解析,得到用户标识和目标时间戳。
S318、开发者服务器判断目标时间戳是否满足预设有效时间策略;预设有效时间策略为:当前时刻与目标时间戳之间的差值小于预设时长,当前时刻为判断目标时间戳是否满足预设有效时间策略时对应的时刻;判断用户标识与接口入参标识是否一致。
若目标时间戳满足预设有效时间策略,且用户标识与接口入参标识一致,则判断访问令牌有效,进行步骤S319;若目标时间戳不满足预设有效时间策略,和/或用户标识与接口入参标识不一致,则判断访问令牌无效,进行步骤S320。
其中,预设时长可以根据实际场景设定,本申请实施例对此不作具体限定。
本申请实施例中,开发者服务器对目标时间戳是否满足预设有效时间策略的判断,以及对用户标识与接口入参标识是否一致的判断可以同步或异步进行。
示例性的,开发者服务器解析得到用户标识和目标时间戳后,获取当前时刻,并判断当前时刻与目标时间戳之间的差值是否小于预设时长,若否,则表征该访问令牌无效;判断开发者服务器用户标识与接口入参标识是否一致。例如,当开发者服务器接收到的接口入参标识为用户在微信小程序注册的手机号的加密值时,则可以判断用户标识与接口入参标识一致;当开发者服务器接收到的接口入参标识为空值或者为其他手机号的加密值时,则可以判断用户标识与接口入参标识不一致,则表征该访问令牌无效。在判断当前时刻与目标时间戳之间的差值小于预设时长,且判断用户标识与接口入参标识一致时,则确定访问令牌有效。这样,若攻击者使用访问令牌时对应的时刻与目标时间戳之间的差值小于预设时长,和/或,攻击者使用的接口入参标识为空值或者为其他手机号的加密值,则攻击者无法通过访问令牌去访问用户和其他手机号拥有的微信小程序页面,或者说是针对攻击者对用户和其他手机号拥有的微信小程序页面的访问操作进行了拦阻,使攻击者不能访问用户和其他手机号拥有的微信小程序页面,从而达到了提高微信小程序用户数据的安全性的效果。
S319、开发者服务器向客户端返回业务请求的响应结果。
开发者服务器执行用户的业务请求,并将业务请求的响应结果发送到微信小程序的客户端。
S320、开发者服务器使用户登出微信小程序。
该步骤与上述S203相似或相同,在此不再赘述。
本申请实施例中,从用户标识和时间两个维度一起对访问令牌进行有效性判断,这样,即使攻击者拿到了访问令牌,但若攻击者输入的接口入参标识与访问令牌中的用户标识不一致,和/或,目标时间戳不满足预设有效时间策略,则攻击者也无法通过接口入参标识模拟用户发起请求,进而获取用户信息或者修改用户数据,因此提升了攻击者通过token获取或破坏微信小程序用户数据的难度,从而提高了微信小程序用户数据的安全性。
图4为本申请实施例提供的一种微信小程序的访问控制装置的结构示意图。请参见图4,该微信小程序的访问控制装置40包括接收模块401、判断模块402和登出模块403,其中,
接收模块401,用于接收用户的业务请求和接口入参标识;业务请求中携带访问令牌,用户处于已登录微信小程序的状态,访问令牌包括目标时间戳和用户标识,访问令牌用于微信小程序的客户端和服务端交互时识别用户;
判断模块402,用于根据接口入参标识和预设有效时间策略对访问令牌进行有效性判断;
登出模块403,用于在判断访问令牌无效时,使用户登出微信小程序。
在一种可能的实现方式中,判断模块402,具体用于:
对访问令牌进行解析,得到用户标识和目标时间戳;
判断目标时间戳是否满足预设有效时间策略;预设有效时间策略为:当前时刻与目标时间戳之间的差值小于预设时长,当前时刻为判断目标时间戳是否满足预设有效时间策略时对应的时刻;
判断用户标识与接口入参标识是否一致;
若目标时间戳满足预设有效时间策略,且用户标识与接口入参标识一致,则判断访问令牌有效;
若目标时间戳不满足预设有效时间策略,和/或用户标识与接口入参标识不一致,则判断访问令牌无效。
在一种可能的实现方式中,装置40还包括:
获取模块,用于获取用户针对于微信小程序的专属标识;
判别模块,用于判断预设数据表中是否存在专属标识,得到判断结果;
确定模块,用于根据判断结果获取用户标识,并根据用户标识和目标时间戳确定用户的访问令牌,将访问令牌发送到微信小程序的客户端。
在一种可能的实现方式中,目标时间戳包括第一时间戳或第二时间戳,确定模块,具体用于:
若预设数据表中存在专属标识,则从预设数据表中获取专属标识对应的用户标识,并根据第一时间戳和用户标识生成用户的访问令牌;
若预设数据表中不存在专属标识,则获取用户的注册凭证,根据注册凭证得到用户标识,根据第二时间戳和用户标识生成用户的访问令牌,并将用户标识和专属标识存入预设数据表中。
在一种可能的实现方式中,确定模块,具体用于:
将注册凭证发送到微信接口服务,以使微信接口服务对注册凭证的合法性和有效性进行校验,在校验通过时返回用户标识的加密信息;
接收微信接口服务返回的加密信息,对加密信息进行解密,得到用户标识。
在一种可能的实现方式中,获取模块,具体用于:
获取登录凭证;
将登录凭证发送到微信接口服务,以使微信接口服务对登录凭证的合法性和有效性进行校验,在校验通过时返回专属标识;
接收微信接口服务返回的专属标识。
在一种可能的实现方式中,装置40还包括:
响应模块,用于在判断访问令牌有效时,向客户端返回业务请求的响应结果。
本申请实施例提供的微信小程序的访问控制装置,可用于执行上述的方法实施例,其实现原理和技术效果类似,本申请实施例此处不再赘述。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
本申请实施例提供一种电子设备,图5为本申请实施例提供的一种电子设备的硬件结构示意图。
如图5所示,该电子设备50包括:处理器501和存储器502;存储器502存储计算机执行指令;处理器501执行存储器502存储的计算机执行指令,使得电子设备50执行上述方法。
当存储器502独立设置时,该电子设备50还包括总线503,用于连接存储器502和处理器501。
图5实施例所示的电子设备50可以执行上述方法实施例中的步骤,其实现原理以及有益效果类似,此处不再进行赘述。
本申请实施例提供一种芯片。芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现上述方法。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
一种可能的实现方式中,计算机可读介质可以包括RAM,ROM,只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(digital subscriber line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(digital versatiledisc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行上述方法。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种微信小程序的访问控制方法,其特征在于,所述方法包括:
接收用户的业务请求和接口入参标识;所述业务请求中携带访问令牌,所述用户处于已登录所述微信小程序的状态,所述访问令牌包括目标时间戳和用户标识,所述访问令牌用于所述微信小程序的客户端和服务端交互时识别所述用户;
根据所述接口入参标识和预设有效时间策略对所述访问令牌进行有效性判断;
在判断所述访问令牌无效时,使所述用户登出所述微信小程序。
2.根据权利要求1所述的方法,其特征在于,所述根据所述接口入参标识和预设有效时间策略对所述访问令牌进行有效性判断,包括:
对所述访问令牌进行解析,得到所述用户标识和所述目标时间戳;
判断所述目标时间戳是否满足所述预设有效时间策略;所述预设有效时间策略为:当前时刻与所述目标时间戳之间的差值小于预设时长,所述当前时刻为判断所述目标时间戳是否满足所述预设有效时间策略时对应的时刻;
判断所述用户标识与所述接口入参标识是否一致;
若所述目标时间戳满足所述预设有效时间策略,且所述用户标识与所述接口入参标识一致,则判断所述访问令牌有效;
若所述目标时间戳不满足所述预设有效时间策略,和/或所述用户标识与所述接口入参标识不一致,则判断所述访问令牌无效。
3.根据权利要求2所述的方法,其特征在于,在所述接收用户的业务请求之前,所述方法还包括:
获取用户针对于所述微信小程序的专属标识;
判断预设数据表中是否存在所述专属标识,得到判断结果;
根据所述判断结果获取用户标识,并根据所述用户标识和目标时间戳确定所述用户的访问令牌,将所述访问令牌发送到所述微信小程序的客户端。
4.根据权利要求3所述的方法,其特征在于,所述目标时间戳包括第一时间戳或第二时间戳,所述根据所述判断结果获取用户标识,并根据所述用户标识和目标时间戳确定所述用户的访问令牌,包括:
若所述预设数据表中存在所述专属标识,则从所述预设数据表中获取所述专属标识对应的所述用户标识,并根据第一时间戳和所述用户标识生成所述用户的访问令牌;
若所述预设数据表中不存在所述专属标识,则获取所述用户的注册凭证,根据所述注册凭证得到所述用户标识,根据第二时间戳和所述用户标识生成所述用户的访问令牌,并将所述用户标识和所述专属标识存入所述预设数据表中。
5.根据权利要求4所述的方法,其特征在于,所述根据所述注册凭证得到所述用户标识,包括:
将所述注册凭证发送到微信接口服务,以使所述微信接口服务对所述注册凭证的合法性和有效性进行校验,在校验通过时返回所述用户标识的加密信息;
接收所述微信接口服务返回的所述加密信息,对所述加密信息进行解密,得到所述用户标识。
6.根据权利要求3至5中任一项所述的方法,其特征在于,所述获取用户针对于所述微信小程序的专属标识,包括:
获取登录凭证;
将所述登录凭证发送到微信接口服务,以使所述微信接口服务对所述登录凭证的合法性和有效性进行校验,在校验通过时返回所述专属标识;
接收所述微信接口服务返回的所述专属标识。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
在判断所述访问令牌有效时,向所述客户端返回所述业务请求的响应结果。
8.一种微信小程序的访问控制装置,其特征在于,包括接收模块,判断模块和登出模块,其中,
所述接收模块,用于接收用户的业务请求和接口入参标识;所述业务请求中携带访问令牌,所述用户处于已登录所述微信小程序的状态,所述访问令牌包括目标时间戳和用户标识,所述访问令牌用于所述微信小程序的客户端和服务端交互时识别所述用户;
所述判断模块,用于根据所述接口入参标识和预设有效时间策略对所述访问令牌进行有效性判断;
所述登出模块,用于在判断所述访问令牌无效时,使所述用户登出所述微信小程序。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410012093.3A CN117792785A (zh) | 2024-01-03 | 2024-01-03 | 微信小程序的访问控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410012093.3A CN117792785A (zh) | 2024-01-03 | 2024-01-03 | 微信小程序的访问控制方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117792785A true CN117792785A (zh) | 2024-03-29 |
Family
ID=90383457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410012093.3A Pending CN117792785A (zh) | 2024-01-03 | 2024-01-03 | 微信小程序的访问控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117792785A (zh) |
-
2024
- 2024-01-03 CN CN202410012093.3A patent/CN117792785A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113114624B (zh) | 基于生物特征的身份认证方法和装置 | |
US10419431B2 (en) | Preventing cross-site request forgery using environment fingerprints of a client device | |
JP6574168B2 (ja) | 端末識別方法、ならびにマシン識別コードを登録する方法、システム及び装置 | |
US20210234857A1 (en) | Authentication system, authentication method, and application providing method | |
WO2018145605A1 (zh) | 鉴权方法及服务器、访问控制装置 | |
EP2963958B1 (en) | Network device, terminal device and information security improving method | |
WO2017036310A1 (zh) | 验证信息的更新方法及装置 | |
WO2020041747A1 (en) | Methods, apparatuses, and computer program products for frictionless electronic signature management | |
JP2018501567A (ja) | 装置検証方法及び機器 | |
KR101451359B1 (ko) | 사용자 계정 회복 | |
CN112559993B (zh) | 身份认证方法、装置、系统及电子设备 | |
CN105554098A (zh) | 一种设备配置方法、服务器及系统 | |
CN107426235B (zh) | 基于设备指纹的权限认证方法、装置及系统 | |
KR102137122B1 (ko) | 보안 체크 방법, 장치, 단말기 및 서버 | |
CN110069909B (zh) | 一种免密登录第三方系统的方法及装置 | |
WO2016188335A1 (zh) | 用户数据的访问控制方法、装置及系统 | |
CN104753674A (zh) | 一种应用身份的验证方法和设备 | |
WO2021137769A1 (en) | Method and apparatus for sending and verifying request, and device thereof | |
CN113572728A (zh) | 认证物联网设备的方法、装置、设备及介质 | |
CN111597537B (zh) | 基于区块链网络的证书签发方法、相关设备及介质 | |
CN113505353A (zh) | 一种认证方法、装置、设备和存储介质 | |
CN116647345A (zh) | 权限令牌的生成方法以及装置、存储介质、计算机设备 | |
CN114938313B (zh) | 一种基于动态令牌的人机识别方法及装置 | |
CN113992353B (zh) | 登录凭证的处理方法、装置、电子设备及存储介质 | |
CN113472545B (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 |