一种小程序的异常检测方法、装置、设备及可读存储介质转让专利

申请号 : CN202310111408.5

文献号 : CN115828247B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘焱

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本申请公开了一种小程序的异常检测方法、装置、设备及可读存储介质,切面服务器确定检测切面程序和检测切面程序对应的切点,在宿主应用程序的桥接函数中的切点处部署检测切面程序,进而通过检测切面程序拦截小程序向桥接函数发送的资源获取请求,并从资源获取请求中确定待检测的资源地址,以根据预先存储的异常资源地址以及待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。可见,通过在桥接函数中部署检测切面程序的方式,在无需更改桥接函数原有的业务逻辑的情况下,就能够对小程序向第三方请求获取的资源进行动态的异常检测,进一步提高异常检测的准确性和隐私信息的安全性。

权利要求 :

1.一种小程序的异常检测方法,所述方法应用于切面服务器,所述方法包括:确定检测切面程序和所述检测切面程序对应的切点;

通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序;

通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源;

接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址;

根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果;

所述宿主应用程序部署图像分类模型的特征提取子模型,所述切面服务器部署所述图像分类模型的分类子模型;

所述方法还包括:

通过所述检测切面程序,拦截所述第三方通过所述桥接函数向所述小程序返回的图像,并将所述图像输入到所述特征提取子模型,得到所述特征提取子模型输出的所述图像的特征;

接收由所述检测切面程序发送的所述图像的特征;

将所述图像的特征输入到所述分类子模型中,得到所述图像的分类结果;

根据所述图像的分类结果确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。

2.如权利要求1所述的方法,接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址,具体包括:通过所述检测切面程序从所述资源获取请求中确定待检测的资源地址,以及对所述待检测的资源地址进行哈希处理,得到所述待检测的资源地址的哈希值;

接收所述检测切面程序发送的所述待检测的资源地址对应的哈希值,作为待检测哈希值;

根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,具体包括:根据预先存储的各异常资源地址的哈希值以及所述待检测哈希值,判断所述待检测哈希值是否命中预先存储的任一异常资源地址的哈希值;

若是,确定所述待检测的资源地址的检测结果为异常;

若否,确定所述待检测的资源地址的检测结果为正常。

3.如权利要求1所述的方法,所述资源至少包括:图像;

所述方法还包括:

通过所述检测切面程序拦截所述第三方通过所述桥接函数向所述小程序返回的图像;

接收所述检测切面程序发送的所述图像;

将所述图像输入到预先训练的图像分类模型,得到所述图像分类模型输出的所述图像的分类结果;

根据所述图像的分类结果,确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。

4.如权利要求1或3所述的方法,预先训练图像分类模型,具体包括:获取若干历史图像作为训练样本,并获取所述历史图像的异常类型作为所述训练样本的标注;

将所述训练样本输入到待训练的图像分类模型,通过所述图像分类模型的特征提取子模型以及分类子模型,得到所述训练样本的预测类型;

以所述训练样本的预测类型和所述训练样本的标签之间的差异的最小化为训练目标,训练所述图像分类模型。

5.如权利要求1或3所述的方法,所述方法还包括:

当所述资源地址的检测结果和所述图像的检测结果中至少一个为异常时,确定所述资源获取请求中请求获取的图像的检测结果为异常。

6.如权利要求1或3所述的方法,所述方法还包括:

当所述资源地址的检测结果为正常,且所述图像的检测结果为异常时,将所述待检测的资源地址作为异常资源地址存储。

7.一种小程序的异常检测装置,所述装置应用于切面服务器,所述装置包括:切面程序确定模块,用于确定检测切面程序和所述检测切面程序对应的切点;

部署模块,用于通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序;

拦截模块,用于通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源;

资源地址确定模块,用于接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址;

第一检测模块,用于根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果;

所述宿主应用程序部署图像分类模型的特征提取子模型,所述切面服务器部署所述图像分类模型的分类子模型;

所述装置还包括:

第三检测模块,具体用于通过所述检测切面程序,拦截所述第三方通过所述桥接函数向所述小程序返回的图像,并将所述图像输入到所述特征提取子模型,得到所述特征提取子模型输出的所述图像的特征;接收由所述检测切面程序发送的所述图像的特征;将所述图像的特征输入到所述分类子模型中,得到所述图像的分类结果;根据所述图像的分类结果确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。

8.如权利要求7所述的装置,所述资源地址确定模块,具体用于通过所述检测切面程序从所述资源获取请求中确定待检测的资源地址,以及对所述待检测的资源地址进行哈希处理,得到所述待检测的资源地址的哈希值;接收所述检测切面程序发送的所述待检测的资源地址对应的哈希值,作为待检测哈希值;

所述第一检测模块,具体用于根据预先存储的各异常资源地址的哈希值以及所述待检测哈希值,判断所述待检测哈希值是否命中预先存储的任一异常资源地址的哈希值;若是,确定所述待检测的资源地址的检测结果为异常;若否,确定所述待检测的资源地址的检测结果为正常。

9.如权利要求7所述的装置,所述资源至少包括:图像;

所述装置还包括:

第二检测模块,具体用于通过所述检测切面程序拦截所述第三方通过所述桥接函数向所述小程序返回的图像;接收所述检测切面程序发送的所述图像;将所述图像输入到预先训练的图像分类模型,得到所述图像分类模型输出的所述图像的分类结果;根据所述图像的分类结果,确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。

10.如权利要求7或9所述的装置,所述装置还包括:

训练模块,具体用于获取若干历史图像作为训练样本,并获取所述历史图像的异常类型作为所述训练样本的标注;将所述训练样本输入到待训练的图像分类模型,通过所述图像分类模型的特征提取子模型以及分类子模型,得到所述训练样本的预测类型;以所述训练样本的预测类型和所述训练样本的标签之间的差异的最小化为训练目标,训练所述图像分类模型。

11.如权利要求7或9所述的装置,所述装置还包括:

第四检测模块,具体用于当所述资源地址的检测结果和所述图像的检测结果中至少一个为异常时,确定所述资源获取请求中请求获取的图像的检测结果为异常。

12.如权利要求7或9所述的装置,所述装置还包括:

存储模块,具体用于当所述资源地址的检测结果为正常,且所述图像的检测结果为异常时,将所述待检测的资源地址作为异常资源地址存储。

13.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1 6任一项所述的方法。

~

14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1 6任一项所述的方法。

~

说明书 :

一种小程序的异常检测方法、装置、设备及可读存储介质

技术领域

[0001] 本说明书涉及计算机技术领域,尤其涉及一种小程序的异常检测方法、装置、设备及可读存储介质。

背景技术

[0002] 随着互联网技术的发展,人们对隐私数据关注度逐渐提高。由于互联网技术和业务深入融合的需要,用户可以通过小程序执行业务。通常,小程序通过小程序平台提供的业务接口实现其业务功能,但是,如果小程序未执行安全合法的业务,小程序出现了异常行为,可能会给使用小程序的用户带来隐私数据的泄露等问题,并给小程序平台带来严重的合规风险。
[0003] 基于此,本说明书提供一种基于安全切面的小程序的异常检测方法,以检测小程序是否存在异常行为。

发明内容

[0004] 本说明书提供一种小程序的异常检测方法、装置、设备及可读存储介质,以部分的解决现有技术存在的上述问题。
[0005] 本说明书采用下述技术方案:
[0006] 本说明书提供了一种小程序的异常检测方法,所述方法应用于切面服务器,所述方法包括:
[0007] 确定检测切面程序和所述检测切面程序对应的切点;
[0008] 通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序;
[0009] 通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源;
[0010] 接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址;
[0011] 根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0012] 本说明书提供了一种异常检测装置,所述装置应用于切面服务器,所述装置包括:
[0013] 切面程序确定模块,用于确定检测切面程序和所述检测切面程序对应的切点;
[0014] 部署模块,用于通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序;
[0015] 拦截模块,用于通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源;
[0016] 资源地址确定模块,用于接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址;
[0017] 第一检测模块,用于根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0018] 本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述小程序的异常检测方法。
[0019] 本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述小程序的异常检测方法。
[0020] 本说明书采用的上述至少一个技术方案能够达到以下有益效果:
[0021] 本说明提供的小程序的异常检测方法中,切面服务器确定检测切面程序和检测切面程序对应的切点,通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处部署检测切面程序,进而通过检测切面程序拦截小程序向桥接函数发送的资源获取请求,并从资源获取请求中确定待检测的资源地址,以根据预先存储的异常资源地址以及待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。可见,通过在桥接函数中部署检测切面程序的方式,在无需更改桥接函数原有的业务逻辑的情况下,就能够对小程序向第三方请求获取的资源进行动态的异常检测,进一步提高异常检测的准确性。

附图说明

[0022] 此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
[0023] 图1为本说明书中一种小程序的异常检测方法的流程示意图;
[0024] 图2为本说明书中一种小程序的异常检测方法的流程示意图;
[0025] 图3为本说明书提供的一种小程序的异常检测装置的示意图;
[0026] 图4为本说明书提供的一种实现小程序的异常检测方法的电子设备示意图。

具体实施方式

[0027] 为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
[0028] 另外,需要说明的是,本发明中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
[0029] 小程序是一种不需要下载安装即可使用的应用,一般需要依托于一定的宿主应用程序,通过宿主应用程序提供的业务接口实现其业务功能。通过执行不合法不安全的业务,展示影响用户身心健康和危及财产安全的违规图像和视频,进一步诱导用户进入不安全的网站,这给用户带来财产和个人信息的安全问题,并给宿主应用程序带来严重的合规与法律风险。因此,如何对小程序展示的资源内容进行检测和审核,成为宿主应用程序关注的重点内容。
[0030] 基于此,本说明书提供一种基于安全切面的小程序的异常检测方法,通过采用安全切面的方式,在宿主应用程序的桥接函数中部署检测切面程序,在无需更改桥接函数原有的业务逻辑的情况下,就能够对小程序请求调用的第三方资源进行动态的异常检测。并且,通过动态检测的方式还能够对小程序动态展示的资源进行异常检测,进一步提高异常检测的准确性。降低了开发和测试所需的成本,提高了异常检测的灵活性。其中,该异常检测切面程序为用于对小程序向第三方请求调用的资源进行异常检测的切面程序。
[0031] 其中,上文所说的安全切面是指通过采用面向切面编程(Aspect‑oriented Programming,AOP)的方式,在不修改业务应用程序的情况下,在业务应用程序的运行逻辑中动态的添加或修改用于实现安全切面业务的切面程序的方法。使得在实现安全切面业务的同时,使实现安全切面业务的程序与业务应用程序解耦,从而避免高耦合导致的开发迭代问题。
[0032] 这里说的切面程序,即基于业务运行逻辑来实现安全切面业务的增强程序。可通过采用面向切面编程的方式,将切面程序注入至业务应用程序的相应切点处,该切面程序在执行业务应用程序的过程中被触发执行,实现所需的安全切面业务功能。
[0033] 而业务应用程序在执行业务时,业务应用程序通常通过方法之间的调用进行业务执行。因此,可将业务应用程序中的任意方法作为切面程序的切入点,即上述所说的切点,并将切面程序注入对应切点。使得业务应用程序在执行至切点,即调用该切点对应的业务应用程序的方法时,执行在该切点注入的切面程序。
[0034] 通常,负责将切面程序注入至切点的过程的代码存在较高的可复用性,因此,通常将实现这一过程的程序抽象为一个服务模块,即切面底座。切面底座可从提供安全切面业务的服务器获取需要部署的切面程序以及获取切面程序在业务应用程序中注入的切点,在应用容器启动后被唤醒并在业务应用程序的切点处注入对应的切面程序。
[0035] 业务应用程序可以是业务平台的服务器中提供业务服务的业务应用程序。其中,业务服务可以是业务平台的服务器向用户提供的业务服务,如,查询业务、支付业务等。业务服务还可以是业务平台的某服务器向其他服务器提供的业务服务,如,结算业务等。
[0036] 当然了,由上述描述可知,为了使安全切面业务的程序与业务应用程序解耦,本说明书通过采用面向切面编程的方式使得安全切面业务的程序与业务应用程序在业务执行时相互交织,但又互相平行可各自独立维护。因此,区别于业务应用程序的业务提供方,提供安全切面业务的第三方可通过服务器管理安全切面业务所涉及的内容,例如,安全切面业务管控策略的配置、切面程序的版本迭代、切面程序的部署规则配置等等。当然,提供安全切面业务的可以是第三方,也可以是业务提供方。
[0037] 服务器在管理安全切面业务所涉及的内容时,可通过配置文件记录各种配置信息,例如各种策略的配置、切面程序的部署规则配置等。使得切面底座可根据配置文件完成对切面程序的部署,或者服务器可根据配置文件实现安全切面业务。
[0038] 在实际应用中,业务提供方通常设置有包括若干物理机或物理服务器的机房,通过物理机提供业务应用程序所需的物理资源。当然,一个业务应用程序可能无需整个物理机的所有物理资源,于是,一般还会通过虚拟化技术在一个物理机上运行多个虚拟主机(virtual hosting)。各个虚拟主机之间是互相独立的,各自享有物理机的部分物理资源。然后,可在虚拟主机中部署应用容器,并通过应用容器运行业务应用程序。应用容器通常包含分配给该应用容器的物理资源,如CPU、内存等,以及提供给该应用容器的运行环境,如操作系统(Operating System,OS)或其他运行环境数据,如,容器的序列(Serial Number,SN)号、分配的IP(Influential Property)、应用名、租户、环境变量等)。业务应用程序可部署在应用容器中以执行业务。
[0039] 而在基于安全切面执行业务的场景中,业务提供方或者提供安全切面业务的第三方的服务器可提供服务器,通过服务器管理安全切面业务所涉及的内容,并将切面底座部署在应用容器中,通过切面底座将切面程序注入业务应用容器中的业务应用程序中,以为业务提供方的应用容器提供安全切面业务的支持。
[0040] 于是,可预先在业务提供方的应用容器中部署切面底座。一般情况下,在启动应用容器时,可唤起提供给应用容器的操作系统,以及运行预先部署的切面底座,通过切面底座从服务器中得到切面程序和业务应用程序的切点,并将切面程序注入应用容器中的业务应用程序的切点处。此外,切面底座也可在业务应用程序执行过程中,从服务器中得到切面程序和业务应用程序的切点,并将切面程序注入应用容器中的业务应用程序的切点处。
[0041] 当然,切面底座如何从服务器中得到部署切面程序所需的信息,可根据需要设置。例如,可以是根据配置文件主动从服务器中拉取所需的信息,或者服务器可主动下发使切面底座接收所需的信息。
[0042] 将切面程序注入业务应用程序的切点后,业务应用程序在执行过程中,即可触发该切面程序从而实现相应的安全切面业务功能。
[0043] 客户端中安装有可以作为各小程序的宿主应用程序的应用程序,宿主应用程序通过桥接(JavaScript Bridge)函数为各小程序提供可被调用的业务接口,各小程序通过调用各业务接口实现相应的业务功能。比如,宿主应用程序为“支付宝”,小程序为“菜鸟”、“交通出行”、“饿了么”等。
[0044] 其中,客户端可以是位于用户端的智能设备。比如,手机、平板电脑、笔记本电脑等。宿主应用程序可以安装在客户端。
[0045] 基于此,本说明书提供一种小程序的异常检测方法,通过在宿主应用程序的桥接函数中部署检测切面程序的方式,在无需更改桥接函数原有的业务逻辑的情况下,就能够对小程序向第三方请求获取的资源进行动态的异常检测。
[0046] 以下结合附图,详细说明本说明书各实施例提供的技术方案。
[0047] 图1为本说明书提供的一种小程序的异常检测方法的流程示意图。
[0048] S100:确定检测切面程序和所述检测切面程序对应的切点。
[0049] 目前,可以通过对小程序的静态代码进行安全扫描,以检测静态代码中是否存在小程序违规从第三方获取异常资源的异常行为,尤其是展示影响用户身心健康和危及财产安全的违规图像、视频等资源。然而,可能会出现小程序的静态代码不存在从第三方获取异常资源的异常行为,但会在小程序动态运行时向第三方动态地违规请求获取异常资源的情况。针对这种情况,静态代码扫描的方式无法检测出小程序向第三方动态地违规请求获取异常资源的恶意行为,导致异常检测准确率较低。因此,本方案通过在宿主应用程序的桥接函数中注入检测切面程序的方式,动态监测小程序运行过程中向第三方请求获取资源的记录,并对小程序的请求获取的资源进行检测,以确定该小程序是否存在恶意行为。
[0050] 在实际应用中,小程序可通过宿主应用程序的桥接函数向第三方发送资源获取请求,由桥接函数将资源获取请求转发给第三方,第三方根据接收到的资源获取请求,确定小程序请求获取的资源,并将资源返回给宿主应用程序的桥接函数,由桥接函数将资源转发给小程序,使得小程序根据接收到的资源继续执行业务。在上述过程中,桥接函数可以获取小程序的资源获取请求,也可以获取第三方针对资源获取请求返回的资源。由此,在宿主应用程序的桥接函数部署检测切面程序可以实现动态检测小程序调用的资源的目的。
[0051] 其中,检测切面程序用于对小程序发送的资源获取请求中请求调用的资源进行异常检测,检测切面的切点即为检测切面程序部署的位置。
[0052] 另外,小程序向第三方请求获取的资源可以是现有的任意类型的业务资源,如图像、音视频等,本说明书对此不做限定。
[0053] S102:通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序。
[0054] 由于在本说明书实施例中,小程序依托于宿主应用程序提供的桥接函数实现其业务功能,因此宿主应用程序可以监控小程序动态获取第三方资源的资源获取请求,也可以监控第三方返回资源。通过将检测切面程序的切点部署在宿主应用程序的桥接函数中,并通过预先部署的切面底座在切点处部署检测切面程序的方式,无需更改桥接函数的业务逻辑就能够对小程序动态请求获取的资源进行异常检测,进一步提高了异常检测的准确性,并降低开发和测试所需的成本,提高了异常检测的灵活性。
[0055] S104:通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源。
[0056] 通常,小程序在实现其业务功能时,可动态地向第三方请求获取资源,以根据第三方返回的资源实现其业务功能,如展示图像、音视频等。静态代码扫描的方式只能对不处于运行状态的代码进行异常检测,而对于小程序动态请求获取第三方资源的资源获取请求则无法进行异常检测。针对上述问题,本说明书提供的小程序的异常检测方法,可以通过部署在桥接函数的切点处的检测切面程序,拦截小程序向第三方发送的资源获取请求。资源获取请求中会携带资源地址,第三方可响应于资源获取请求,根据从资源获取请求中解析出的资源地址查找资源并返回。由此,切面服务器可通过部署在桥接函数的切点处的检测切面程序拦截并发送资源获取请求,以解析资源获取请求,并对资源获取请求中携带的待检测的资源地址进行异常检测,从而得到小程序发送的资源获取请求向第三方请求获取的资源的检测结果。
[0057] S106:接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址。
[0058] 具体的,可通过部署在桥接函数中的检测切面程序拦截资源获取请求,并由检测切面程序将资源获取请求发送给切面服务器,由此,切面服务器可根据接收到的资源获取请求,对资源获取请求进行解析,并确定待检测的资源地址进行异常检测。
[0059] S108:根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0060] 进一步的,切面服务器可预先存储若干异常资源地址,该异常资源地址可以是预先确定的异常资源对应的资源地址,异常资源可以是预先由人工标注得到,也可以是根据历史时段的异常检测过程得到,本说明书对此不做限定。
[0061] 具体的,如果待检测的资源地址命中预选存储的任一异常资源地址,说明在本次异常检测之前,该资源地址就已经被确定为异常资源地址并进行存储,则可以直接确定待检测的资源地址的检测结果为异常。如果待检测的资源地址并没有命中预先存储的各异常资源地址中任意一个资源地址,这说明在本次异常检测之前,该待检测的资源地址并未被确定为异常资源,则可确定该待检测的资源地址的检测结果为正常。
[0062] 本说明提供的小程序的异常检测方法中,切面服务器确定检测切面程序和检测切面程序对应的切点,在宿主应用程序的桥接函数中的切点处部署检测切面程序,进而通过检测切面程序拦截小程序向桥接函数发送的资源获取请求,并从资源获取请求中确定待检测的资源地址,以根据预先存储的异常资源地址以及待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。可见,通过在桥接函数中部署检测切面程序的方式,在无需更改桥接函数原有的业务逻辑的情况下,就能够对小程序向第三方请求获取的资源进行动态的异常检测,进一步提高异常检测的准确性。
[0063] 在本说明书一个或多个实施例中,如图1步骤S108所示根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,还可以通过以下方式实施:
[0064] 首先,通过所述检测切面程序从所述资源获取请求中确定待检测的资源地址,以及对所述待检测的资源地址进行哈希处理,得到所述待检测的资源地址的哈希值。
[0065] 具体的,由于对资源地址进行哈希处理得到资源地址的哈希值,并通过比对待检测资源地址的哈希值和异常资源地址的哈希值的方式,可以减少存储异常资源地址所占用的硬件资源,进而可以最大化存储先验的异常资源地址的数量,以提高异常检测的准确性。
[0066] 由此,采用哈希处理的方式,通过检测切面程序对从资源获取请求中解析得到的待检测的资源地址进行哈希处理,得到所述待检测的资源地址的哈希值。该哈希值可以表征待检测的资源地址,如果哈希值相同,则说明资源地址也相同。
[0067] 其次,接收所述检测切面程序发送的所述待检测的资源地址对应的哈希值,作为待检测哈希值。
[0068] 具体的,检测切面程序可以从拦截到的小程序发送的资源获取请求中确定待检测的资源地址,然后,对待检测的资源地址进行哈希处理,得到待检测的资源地址的哈希值,并由检测切面程序将待检测的资源地址对应的哈希值发送给切面服务器。切面服务器可接收由检测切面程序发送的所述待检测的资源地址对应的哈希值,并将其作为待检测哈希值。
[0069] 然后,根据预先存储的各异常资源地址的哈希值以及所述待检测哈希值,判断所述待检测哈希值是否命中预先存储的任一异常资源地址的哈希值。
[0070] 进一步的,从预先存储的各异常资源地址的哈希值中查找,是否存在与待检测哈希值相同的哈希值,若存在,这说明在本次异常检测之前,待检测的资源地址就已经被确定异常资源地址,则可直接确定所述待检测的资源地址的检测结果为异常,进而确定小程序向第三方请求获取的资源是异常资源;而从预先存储的各异常资源地址的哈希值中并未查找到与待检测哈希值相同的哈希值,这说明在本次异常检测之前,该待检测的资源地址并非是异常的,因此可确定所述待检测的资源地址的检测结果为正常,进而确定小程序向第三方请求获取的资源是正常资源。
[0071] 另外,异常资源地址的哈希值可以是预先通过对异常资源地址进行哈希处理得到的,异常资源地址的获取方式与图1步骤S108类似,此处不再赘述。
[0072] 在本说明书一个或多个实施例中,如图1步骤S108所示确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果之后,还可以通过对第三方返回的资源进行异常检测,并根据第三方返回的资源的检测结果确定资源获取请求中请求获取的资源的检测结果,如图2所示,具体方案如下:
[0073] S200:通过所述检测切面程序拦截所述第三方通过所述桥接函数向所述小程序返回的图像。
[0074] 由于小程序需要通过宿主应用程序的桥接函数向第三方请求获取资源,自然,第三方返回的资源也可以通过宿主应用程序的桥接函数发送给小程序,由此,桥接函数的窃电除部署的切面程序才能够对小程序从第三方获取的资源进行监控与异常检测。
[0075] 具体的,第三方可以针对由桥接函数转发的资源获取请求,根据资源获取请求中携带的资源地址,确定小程序所需资源,将资源返回给桥接函数,由桥接函数在确定检测结果为正常后转发给小程序。
[0076] 在本说明书实施例中,小程序向第三方请求获取的资源可以是现有的任一类型的业务资源,如图像、音频、视频等,本说明书对此不做限定。以下仅以小程序向第三方获取的资源为图像为例,对具体的实施方式进行阐述。
[0077] S202:接收所述检测切面程序发送的所述图像。
[0078] 切面服务器通过部署在桥接函数的检测切面程序拦截第三方返回的图像,并由检测切面程序将图像发送给切面服务器,由切面服务器对图像进行异常检测,并在得到图像的检测结果后,由切面服务器将检测结果返回给桥接函数,由桥接函数将检测结果为正常的图像转发给小程序。
[0079] S204:将所述图像输入到预先训练的图像分类模型,得到所述图像分类模型输出的所述图像的分类结果。
[0080] 具体的,切面服务器对图像进行异常检测的方式可以是将图像输入到预先训练的图像分类模型中,由图像分类模型输出图像的分类结果。其中,图像分类模型可以是预先基于历史图像及历史图像的分类结果确定的训练样本以及训练样本的标注训练得到的,在本说明书实施例中并不限定图像分类模型的模型结构。
[0081] S206:根据所述图像的分类结果,确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0082] 具体的,图像分类结果可以指示小程序向第三方请求获取的图像是否为异常,由于图像分类模型是预先以历史图像为训练样本,以历史图像的分类结果为训练样本的标注训练得到的,由此,图像分类模型具有根据图像确定出图像分类结果的能力,而图像的分类结果可以指示图像是否为异常图像。进而,如果图像的分类结果为正常图像,则可以确定小程序向第三方请求获取的图像为正常图像,如果图像的分类结果为异常图像,则可以确定小程序向第三方请求获取的图像以异常图像。
[0083] 在本说明书一个或多个实施例中,如图2步骤S204所示将所述图像输入到预先训练的图像分类模型,得到所述图像分类模型输出的所述图像的分类结果时,图像分类模型还可以被拆分为特征提取子模型和分类子模型,其中,特征子模型可以部署在宿主应用程序,而分类子模型则可以部署在切面服务器,具体方案如下:
[0084] 第一步:通过所述检测切面程序,拦截所述第三方通过所述桥接函数向所述小程序返回的图像,并将所述图像输入到所述特征提取子模型,得到所述特征提取子模型输出的所述图像的特征。
[0085] 具体的,由于部署在宿主应用程序的桥接函数的切点处的检测切面程序可以直接拦截第三方通过桥接函数发送的图像,因此,可通过检测切面程序将图像直接输入到部署在宿主应用程序的特征提取子模型中,由特征提取子模型输出图像的特征,并通过检测切面程序将图像的特征发送给切面服务器。由于特征提取子模型部署在宿主应用程序,无需传输图像值切面服务器,避免图像在传输过程中发生的泄露,提高了隐私数据的安全性。
[0086] 第二步:接收由所述检测切面程序发送的所述图像的特征。
[0087] 第三步:将所述图像的特征输入到所述分类子模型中,得到所述图像的分类结果。
[0088] 分类子模型部署在切面服务器,切面服务器在接收到有检测切面程序发送的图像的特征后,可直接将图像的特征输入到分类子模型中,由分类子模型输出图像的分类结果。
[0089] 第四步:根据所述图像的分类结果确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0090] 此处与如图2步骤S206类似,此处不再赘述。
[0091] 在本说明书一个或多个实施例中,通过上述两种可选的方案,基于预训练的图像分类模型对图像进行异常检测之前,还可以预先训练图像分类模型,具体通过以下方案实施:
[0092] 获取若干历史图像作为训练样本,并获取所述历史图像的异常类型作为所述训练样本的标注。
[0093] 将所述训练样本输入到待训练的图像分类模型,通过所述图像分类模型的所述特征提取子模型以及所述分类子模型,得到所述训练样本的预测类型。
[0094] 以所述训练样本的预测类型和所述训练样本的标签之间的差异的最小化为训练目标,训练所述图像分类模型。
[0095] 在本说明书一个或多个实施例中,在如图2步骤S206确定所述图像的检测结果之后,可以根据图1步骤S108确定的待检测的资源地址的检测结果,以及图像的检测结果,综合得到资源获取请求中请求获取资源的检测结果。
[0096] 具体的,当所述资源地址的检测结果和所述图像的检测结果中至少一个为异常时,确定所述资源获取请求中请求获取的图像的检测结果为异常。也就是说,只要资源地址的检测结果和图像的检测结果中有一个是异常的,小程序向第三方发送的资源获取请求中请求获取的图像的检测结果即为异常的。如果上述两种检测结果均为正常,则资源获取请求中请求获取的图像的检测结果才是正常的。
[0097] 这是由于,可能会存在资源获取请求中携带的资源地址在本次异常检测之前,并未经过异常检测,也没有经过人工标注,因此,无法从预先存储的异常资源地址中查找待该待检测的资源地址,但是,可以通过图像分类模型对第三方返回的图像进行分类,该图像分类模型可以使基于全量数据训练得到的,其检测范围更广,因此可以发现资源地址正常但是图像异常的图像。
[0098] 由此,通过既对资源获取请求中携带的待检测的资源地址进行异常检测,也对第三方返回的图像进行异常检测的方法,提高了异常检测的准确性。并且基于在桥接函数中注入检测切面程序的方案,既没有影响桥接函数原有的业务逻辑,还提高了异常检测的性能。
[0099] 在本说明书一个或多个实施例中,在如图2步骤S206确定所述图像的检测结果之后,还可以结合待检测的资源地址的检测结果,对资源地址进行进一步的处理,具体如下:
[0100] 当所述资源地址的检测结果为正常,且所述图像的检测结果为异常时,将所述待检测的资源地址作为异常资源地址存储。
[0101] 具体的,这是由于如果资源地址的检测结果为正常,但图像的检测结果为异常,说明在预先存储的异常资源地址中,并不存在该资源地址,也就是说,虽然该资源地址对应的图像是异常的,但是由于没有经过预先的人工标注,或者预先的异常检测,导致异常资源地址中并未存储该资源地址,因此,可将待检测的资源地址作为异常资源地址存储,以拓展异常资源地址的数量,为下一次异常检测提供更为全面的先验知识。
[0102] 图3为本说明书提供的一种异常检测装置示意图,具体包括:
[0103] 切面程序确定模块300,用于确定检测切面程序和所述检测切面程序对应的切点;
[0104] 部署模块302,用于通过预先部署的切面底座,在宿主应用程序的桥接函数中的切点处,部署所述检测切面程序;
[0105] 拦截模块304,用于通过所述检测切面程序拦截小程序向所述桥接函数发送的资源获取请求,所述资源获取请求用于所述小程序从第三方获取资源;
[0106] 资源地址确定模块306,用于接收所述检测切面程序拦截后发送的所述资源获取请求,并从所述资源获取请求中确定待检测的资源地址;
[0107] 第一检测模块308,用于根据预先存储的异常资源地址以及所述待检测的资源地址,确定所述待检测的资源地址的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0108] 可选地,所述资源地址确定模块306,具体用于通过所述检测切面程序从所述资源获取请求中确定待检测的资源地址,以及对所述待检测的资源地址进行哈希处理,得到所述待检测的资源地址的哈希值;接收所述检测切面程序发送的所述待检测的资源地址对应的哈希值,作为待检测哈希值;
[0109] 可选地,所述第一检测模块308,具体用于根据预先存储的各异常资源地址的哈希值以及所述待检测哈希值,判断所述待检测哈希值是否命中预先存储的任一异常资源地址的哈希值;若是,确定所述待检测的资源地址的检测结果为异常;若否,确定所述待检测的资源地址的检测结果为正常。
[0110] 可选地,所述资源至少包括:图像;
[0111] 可选地,所述装置还包括:
[0112] 第二检测模块310,具体用于通过所述检测切面程序拦截所述第三方通过所述桥接函数向所述小程序返回的图像;接收所述检测切面程序发送的所述图像;将所述图像输入到预先训练的图像分类模型,得到所述图像分类模型输出的所述图像的分类结果;根据所述图像的分类结果,确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0113] 可选地,所述宿主应用程序部署所述图像分类模型的特征提取子模型,所述切面服务器部署所述图像分类模型的分类子模型;
[0114] 可选地,所述装置还包括:
[0115] 第三检测模块312,具体用于通过所述检测切面程序,拦截所述第三方通过所述桥接函数向所述小程序返回的图像,并将所述图像输入到所述特征提取子模型,得到所述特征提取子模型输出的所述图像的特征;接收由所述检测切面程序发送的所述图像的特征;将所述图像的特征输入到所述分类子模型中,得到所述图像的分类结果;根据所述图像的分类结果确定所述图像的检测结果,作为所述资源获取请求中请求获取资源的检测结果。
[0116] 可选地,所述装置还包括:
[0117] 训练模块314,具体用于获取若干历史图像作为训练样本,并获取所述历史图像的异常类型作为所述训练样本的标注;将所述训练样本输入到待训练的图像分类模型,通过所述图像分类模型的所述特征提取子模型以及所述分类子模型,得到所述训练样本的预测类型;以所述训练样本的预测类型和所述训练样本的标签之间的差异的最小化为训练目标,训练所述图像分类模型。
[0118] 可选地,所述装置还包括:
[0119] 第四检测模块316,具体用于当所述资源地址的检测结果和所述图像的检测结果中至少一个为异常时,确定所述资源获取请求中请求获取的图像的检测结果为异常。
[0120] 可选地,所述装置还包括:
[0121] 存储模块318,具体用于当所述资源地址的检测结果为正常,且所述图像的检测结果为异常时,将所述待检测的资源地址作为异常资源地址存储。
[0122] 本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1所示的小程序的异常检测方法。
[0123] 本说明书还提供了图4所示的电子设备的示意结构图。如图4所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所示的小程序的异常检测方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0124] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very‑High‑Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0125] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0126] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0127] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0128] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0129] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0130] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0131] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0132] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0133] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0134] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0135] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0136] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0137] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0138] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0139] 以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。