CN114003412A - 小程序和宿主程序进行通信的方法和装置 - Google Patents

小程序和宿主程序进行通信的方法和装置 Download PDF

Info

Publication number
CN114003412A
CN114003412A CN202111609072.2A CN202111609072A CN114003412A CN 114003412 A CN114003412 A CN 114003412A CN 202111609072 A CN202111609072 A CN 202111609072A CN 114003412 A CN114003412 A CN 114003412A
Authority
CN
China
Prior art keywords
message
message body
applet
host program
calling
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
Application number
CN202111609072.2A
Other languages
English (en)
Inventor
蒋理
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202111609072.2A priority Critical patent/CN114003412A/zh
Publication of CN114003412A publication Critical patent/CN114003412A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本说明书实施例提供了小程序和宿主程序进行通信的方法和装置。根据实施例的方法,首先宿主程序接收小程序发送的JSAPI调用消息,其中该调用消息中携带有小程序当前运行的网页视图WebView的消息体的。然后宿主程序从该调用消息中提取出消息体,并根据该消息体对该调用消息来源的合法性进行验证,只有在消息来源合法时才能够执行该调用消息所对应的调用操作,如此避免了非法调用等情况,能够提高小程序和宿主程序进行通信的安全性。

Description

小程序和宿主程序进行通信的方法和装置
技术领域
本说明书一个或多个实施例涉及计算机和通信技术领域,尤其涉及小程序和宿主程序进行通信的方法和装置。
背景技术
随着软件开发技术的不断发展,小程序逐渐走入了公众视野,并且因其快捷、轻便等特点成为目前移动应用领域发展尤其迅速的软件。
然而,在小程序的技术栈中,小程序和宿主应用程序(APP)需要建立纽带进行通信。而这种小程序和宿主APP之间通信时极容易将彼此默认为可信端,从而使得小程序和宿主之间通信的安全性较低。
发明内容
本说明书一个或多个实施例描述了小程序和宿主程序进行通信的方法和装置,能够提升小程序和宿主之间进行通信的安全性。
根据第一方面,提供了小程序和宿主程序进行通信的方法,包括:
接收小程序发送的JSAPI调用消息;其中,所述JSAPI调用消息用于调用宿主程序的相应功能,且携带有所述小程序当前运行的网页视图WebView的消息体;
提取所述JSAPI调用消息的消息体;
根据提取到的所述消息体对消息来源的合法性进行验证;
在所述消息来源合法时,执行所述JSAPI调用消息所要调用的功能;以及,
将执行结果回传给所述小程序。
在一种可能的实现方式中,所述JSAPI调用消息包括:小程序当前运行的网页视图WebView的域名信息和结构信息;
所述提取所述JSAPI调用消息的消息体,包括:
从所述JSAPI调用消息中提取所述WebView的域名信息;其中,所述域名信息用于表征当前运行的WebView的页面地址;
和/或,
从所述JSAPI调用消息中提取所述WebView的结构信息;其中,所述结构信息用于表征当前运行的WebView的页面结构数据。
在一种可能的实现方式中,所述根据提取到的所述消息体对消息来源的合法性进行验证,包括:
从所述小程序当前运行的网页视图WebView中获取对照消息体;
将提取得到的消息体与所述对照消息体进行对比;
当提取到的消息体与所述对照消息体一致时,确定所述JSAPI调用消息的消息来源合法。
在一种可能的实现方式中,所述将提取得到的消息体与所述对照消息体进行对比,包括:
将提取到的消息体中的域名信息和所述对照消息体中的对照域名信息进行对比;
和/或,
将提取到的消息体中的结构信息和所述对照消息体中的对照结构信息进行对比。
在一种可能的实现方式中,所述执行结果包括:
执行所述JSAPI调用消息所要调用的功能后得到的结果,和/或提取得到的所述消息体。
根据第二方面,提供了小程序和宿主程序进行通信的方法,包括:
获取当前运行的网页视图WebView的消息体;
将携带有所述消息体的JSAPI调用消息发送至宿主程序;其中,所述JSAPI调用消息用于调用宿主程序的相应功能;以及,
接收所述宿主程序回传的执行结果;其中,所述执行结果为所述宿主程序对所述JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
在一种可能的实现方式中,所述获取当前网页视图WebView的消息体,包括,
获取当前运行的网页视图WebView的域名信息;其中,所述域名信息用于表征所述WebView的当前页面地址;
和/或,
获取当前运行的网页视图WebView的结构信息;其中,所述结构信息用于表征所述WebView的页面结构数据。
在一种可能的实现方式中,所述执行结果包括:所述提取得到的消息体;
在接收所述宿主程序回传的执行结果之后,进一步包括:
获取当前运行的网页视图WebView的第二消息体;
将提取得到的消息体和所述第二消息体进行比较;
若提取得到的消息体和所述第二消息体不相同,则丢弃所述执行结果。
根据第三方面,提供了小程序和宿主程序进行通信的装置,包括:
调用消息接收模块,配置为接收小程序发送的JSAPI调用消息;其中,所述JSAPI调用消息用于调用宿主程序的相应功能,且携带有所述小程序当前运行的网页视图WebView的消息体;
消息体提取模块,配置为提取所述调用消息接收模块接收到的所述JSAPI调用消息的消息体;
合法性验证模块,配置为根据所述消息体提取模块提取到的所述消息体对消息来源的合法性进行验证;
功能执行模块,配置为在所述合法性验证模块确定所述消息来源合法时,执行所述JSAPI调用消息所要调用的功能;
结果回传模块,配置为将所述功能执行模块得到的执行结果回传给所述小程序。
根据第四方面,提供了小程序和宿主程序进行通信的装置,包括:
消息体获取模块,配置为获取当前运行的网页视图WebView的消息体;
调用消息发送模块,配置为将携带有所述消息体获取模块获取到的所述消息体的JSAPI调用消息发送至宿主程序;其中,所述JSAPI调用消息用于调用宿主程序的相应功能;以及,
执行结果接收模块,配置为接收所述宿主程序回传的执行结果;其中,所述执行结果为所述宿主程序对所述调用消息发送模块发送的JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
根据第五方面,提供了一种计算设备,包括:存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第一方面和第二方面中任一项所述的方法。
根据本说明书实施例提供的方法和装置,在小程序和宿主程序之间进行通信时,首先接收小程序发送的对宿主程序的相应功能进行调用的JSAPI调用消息,然后对JSAPI调用消息中所携带的消息体进行提取。进一步,根据提取到的消息体对消息来源的合法性进行验证,以及在合法时执行相应的调用功能,并将得到的执行结果回传给小程序。由此可见,本方案中小程序在发送JSAPI调用消息时是将小程序当前运行的网页视图WebView的消息体携带在其中的,如此宿主程序可以通过提取该JSAPI调用消息中的消息体,并根据该消息体进行合法性验证,如此保证了该消息来源的可靠性,从而能够提升小程序和宿主程序之间通信的安全性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一个实施例提供的小程序和宿主程序进行通信的方法的流程图;
图2是本说明书另一个实施例提供的小程序和宿主程序进行通信的方法的流程图;
图3是本说明书一个实施例提供的宿主程序进行合法性验证方法的流程图;
图4是本说明书又一个实施例提供的小程序和宿主程序进行通信的方法的流程图;
图5是本说明书一个实施例提供的小程序和宿主程序进行通信的装置的示意图;
图6是本说明书另一个实施例提供的小程序和宿主程序进行通信的装置的示意图;
图7是本说明书又一个实施例提供的小程序和宿主程序进行通信的装置的示意图。
具体实施方式
如前所述,随着软件开发技术的不断发展,小程序因其快捷轻便等特点逐渐受到了公众的青睐。比如,支付宝小程序、微信小程序、百度小程序、360小程序和头条小程序等。
在小程序的技术栈中,小程序会和宿主应用程序建立纽带进行通信。目前,实现小程序和宿主程序之间通信的方法主要是采用JSBridge机制,将JSBridge机制作为连接小程序和宿主应用的纽带,以实现小程序和宿主应用的通信。例如,支付宝小程序或H5应用就是通过JSBridge机制实现了小程序和支付宝宿主APP的通信的。然而,小程序和宿主APP之间进行通信时,双方都极容易将对方默认为可信赖的一方,如果此时任何一方中出现问题,容易造成安全漏洞。比如,小程序在调用宿主应用程序时,如果小程序被更改,或小程序不是宿主应用程序下信赖的小程序,那么如果直接按照小程序的调用执行相应操作,显然这非常容易造成安全隐患。
基于此,本方案考虑在小程序发送调用消息时,将自身运行的网页视图的消息体携带上,如此宿主在接收到调用消息后,通过根据消息体对该次调用进行验证,以此保证了消息来源的可靠性,从而达到提升小程序和宿主程序之间通信的安全性的目的。
如图1所示,本说明书实施例提供了小程序和宿主程序进行通信的方法,该方法应用于宿主程序,其可以包括如下步骤:
步骤101:接收小程序发送的JSAPI调用消息;其中,JSAPI调用消息用于调用宿主程序的相应功能,且携带有小程序当前运行的网页视图WebView的消息体;
步骤103:提取JSAPI调用消息的消息体;
步骤105:根据提取到的消息体对消息来源的合法性进行验证;
步骤107:在消息来源合法时,执行JSAPI调用消息所要调用的功能;
步骤109:将执行结果回传给小程序。
本实施例中,在进行小程序和宿主程序的通信时,考虑先有小程序将当前运行的网页视图WebView的消息体携带在要发送的JSAPI调用消息中。如此,宿主程序在接收到JSAPI调用消息后,将所携带的消息体提取出来,并根据该消息体对该调用消息来源的合法性进行验证,如此保证了消息来源的合法,避免了非法调用的情况,从而能够提高小程序和宿主程序进行通信的安全性。
容易理解的是,小程序应和宿主程序具有对应关系。即当宿主程序为支付宝APP时,该小程序应为支付宝APP下的小程序,比如,该小程序可以包括外卖、共享单车、车票机票预订、旅游指南等;当宿主程序为微信APP时,该小程序为微信APP下的小程序。而当小程序和宿主程序之间不对应时,当其进行通信时,显然其消息来源不具有合法性。从而无法进行通信。
本说明书实施例提供的小程序和宿主程序进行通信的方法主要可以包括如下三个部分,即:
1、小程序对宿主程序的相应功能进行调用;
2、宿主程序对小程序的调用进行处理;
3、小程序和宿主程序对执行结果进行处理。
下面分别从上述三个部分对本说明书实施例作详细说明。
1、小程序对宿主程序的相应功能进行调用
位于宿主程序下的小程序需要调用宿主程序的一些功能来实现一些操作:比如调用宿主程序的数据传输功能、调用宿主程序的摄像头功能等。而当小程序需要调用宿主程序的某一功能时,会向宿主程序发送调用消息。比如,如图2所示,小程序和宿主程序进行通信的方法,还可以通过如下步骤,其可以应用于小程序:
步骤201:获取当前运行的网页视图WebView的消息体;
步骤203:将携带有消息体的JSAPI调用消息发送至宿主程序;其中,JSAPI调用消息用于调用宿主程序的相应功能;
步骤205:接收宿主程序回传的执行结果;其中,执行结果为宿主程序对JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
通过本实施例可知,小程序在生成调用消息时,首先获取当前运行的网页视图WebView的消息体,然后将消息体携带在JSAPI调用消息中发送给宿主程序。如此,宿主程序进一步执行对JSAPI调用消息中进行消息体提取、根据提取到的消息体对消息来源的进行合法性验证、以及在合法时执行JSAPI调用消息所要调用的功能等步骤。最后小程序会接收到宿主程序根据执行情况回传的执行结果。
当前运行的网页视图WebView的消息体对应的是当前小程序运行时的一些具体信息。如此将该消息体携带在JSAPI调用消息中,以进一步有宿主程序根据该消息体对消息来源的合法性进行验证,能够准确判断当前的调用消息是否来自当前运行的小程序,从而提高通信的安全性。
在一种可能的实现方式中,网页视图WebView的消息体可以主要包括该WebView的域名信息url。如此步骤201在获取当前运行的网页视图WebView的消息体时,可以获取当前运行的网页视图WebView的域名信息url。该域名信息url能够表征WebView的当前页面地址。即通过该域名信息url能够清楚的确定出当前运行的网页视图WebView位于哪一页。
在一种可能的实现方式中,网页视图WebView的消息体还可以包括该WebView的结构信息dom。如此步骤201在获取当前运行的网页视图WebView的消息体时,可以获取当前运行的网页视图WebView的结构信息dom。该结构信息dom能够表征WebView的页面结构数据。即通过该结构信息dom能够清楚的知道当前运行的网页视图WebView的结构是怎样的,比如如何渲染的、内容信息是什么等。
需要指出的是,携带在JSAPI调用消息中的消息体可以只包括域名信息url,也可以只包括结构信息dom,还可以同时包括域名信息url和结构信息dom。实际应用中可以通过根据小程序程序和宿主程序之间的通信安全等级要求或权限等级等来进行设定。比如,当消息体同时包括域名信息url和结构信息dom时,其所对应的通信安全等级较低;当消息体只包括域名信息url和结构信息dom中的一个时,其所对应的通信安全等级较低。
无论消息体包括的是域名信息url和结构信息dom中的一个还是多个,都将其与调用消息进行汇聚,生成JSAPI调用消息,比如该JSAPI调用消息的结构可以是JSAPI_CALL_MSG。
2、宿主程序对小程序的调用进行处理
当小程序生成JSAPI调用消息发给宿主程序之后,宿主程序会对该JSAPI调用消息进行相应的处理,比如,对JSAPI调用消息中所携带的消息体进行提取,以及进行消息来源的合法性验证等。
2.1、消息体的提取
由于小程序在生成JSAPI调用消息时,是将小程序当前运行的网页视图WebView的消息体携带在其中的,因此当宿主程序接收到小程序发送的JSAPI调用消息后,会从该JSAPI调用消息中提取出所携带的消息体。
比如,当JSAPI调用消息包括小程序当前运行的网页视图WebView的域名信息url时,步骤103在提取JSAPI调用消息的消息体时,可以从JSAPI调用消息中提取WebView的域名信息url。由于域名信息url能够表征当前运行的WebView的页面地址,也就是说,宿主程序根据该域名信息url能够准确地知道当前运行的小程序的页面的地址是什么,这便于宿主程序进一步确认该小程序发送的JSAPI调用消息的来源是否合法。比如,宿主程序的权限中设置了某一个页面地址不具有调用宿主程序相应功能的权限,那么该JSAPI调用消息不合法,即宿主程序不执行该JSAPI调用消息所想要调用的相应功能。
再比如,当JSAPI调用消息包括小程序当前运行的网页视图WebView的结构信息dom时,步骤103在提取JSAPI调用消息的消息体时,可以从JSAPI调用消息中提取WebView的结构信息dom。由于结构信息dom能够表征当前运行的WebView的页面结构数据,也就是说,宿主程序根据该结构信息dom能够准确地知道当前运行的小程序的页面是什么样的,比如如何渲染的、内容信息是什么等。如此便于宿主程序根据该结构信息能够判断页面中的内容是否是被允许的,即判断JSAPI调用消息是否合法。
值的说明的是,JSAPI调用消息所携带的消息体可以只包括小程序当前运行的网页视图WebView的域名信息,也可以只包括小程序当前运行的网页视图WebView的结构信息,当然还可以同时包括小程序当前运行的网页视图WebView的域名信息和结构信息。因此,在对JSAPI调用消息中所携带的消息体进行提取时,根据其所携带的消息体进行具体提取。即当携带域名信息时,对域名信息进行提取;当携带结构信息时,对结构信息进行提取;当同时携带域名信息和结构信息时,需要同时提取域名信息和结构信息。具体可以根据小程序与宿主程序之间设定的安全通信等级或所开通的权限来确定。比如,安全等级要求越高,所需要的消息体越多。
2.2合法性验证
由于消息体能够表征小程序当前运行的WebView的信息,因此宿主程序能够根据该消息体对JSAPI调用消息的合法性进行验证,以进一步确定是否执行小程序对宿主程序相应功能的调用操作。如图3所示,步骤105在根据提取到的消息体对消息来源的合法性进行验证时,可以通过如下步骤实现:
步骤301:从小程序当前运行的网页视图WebView中获取对照消息体;
步骤303:将提取得到的消息体与对照消息体进行对比;
步骤305:当提取到的消息体与对照消息体一致时,确定JSAPI调用消息的消息来源合法。
本实施例中,在对消息来源的合法性进行验证时,考虑先由宿主程序从小程序当前运行的网页视图WebView中获取用来对照验证的对照消息体,然后将上述从JSAPI调用消息中提取得到的消息体与该对照消息体进行对比。如此可以知,当提取得到的消息体与该对照消息体一致时,则说明JSAPI调用消息的来源合法,宿主程序执行JSAPI调用消息所要调用的相应功能。而如果提取得到的消息体与该对照消息体不一致,则说明存在安全隐患,应将其确认为不合法,不执行JSAPI调用消息所要调用的相应功能。由此可见,本方案通过利用将JSAPI调用消息中所携带的消息体和直接从小程序获取到的当前运行的网页视图WebView的消息体进行对比,保证了JSAPI调用消息来源的合法性,从而提升了小程序和宿主程序之间通信的安全性。
本实施例中,是由宿主程序主动从小程序中获取当前运行的网页视图WebView的消息体。比如,宿主程序的容器通过小程序的WebView API主动获取小程序当前运行的网页视图WebView的消息体。由此而见,本方案还具有实时性特点。如果当前的网页视图WebView发生了变化,那么获取到的对照消息体极大可能性是与从JSAPI调用消息中提取出来的不一致,从而可以解决当小程序发出调用后不想使用该调用的功能,并退出了调用消息所对应的网页视图页面的情况。如此,保证了不仅提高了小程序和宿主程序之间通信的合法性,而且对JSAPI调用请求的时效性做出了判断。
基于上述实施例,消息体可以包括小程序当前运行的网页视图WebView的域名信息,也可以包括小程序当前运行的网页视图WebView的结构信息,还可以同时包括小程序当前运行的网页视图WebView的域名信息和结构信息。因此,步骤303在将提取得到的消息体与对照消息体进行对比时,可以将提取到的消息体中的域名信息和对照消息体中的对照域名信息进行对比,也可以将提取得到的消息体中的结构信息和对照消息体中的对照结构信息进行对比,还可以同时将提取得到的消息体中的域名信息和结构信息与对照消息体中的域名信息和结构信息进行对比。
在进行消息体的对比时,可以判断提取得到的消息体和对照消息体是否完全一致。还可以通过设定一定的规则,比如判定它们是否具有统一格式等,具体可以根据实际应用进行设定。
进一步,当宿主程序对JSAPI调用消息来源的合法性进行验证之后,如果消息来源合法,那么宿主程序会执行JSAPI调用消息所要调用的宿主的相应功能,并生成相应的执行结果。而如果宿主程序确定该消息来源不合法,那么会拒绝该调用请求或对该调用不做任何响应。
3、小程序和宿主程序对执行结果进行处理
3.1、宿主程序对执行结果的处理
当宿主程序确定JSAPI调用消息的来源合法时,会执行相应的调用功能,并生成相应的执行结果返回给小程序。在本实施例中考虑在宿主程序给小程序返回执行结果时,不仅将执行JSAPI调用消息所要调用的功能后得到的结果返回给小程序,而且将在进行合法性验证时从JSAPI调用消息中提取得到的消息体一起返回给小程序,如此可以由小程序根据该返回的消息体进行验证,以避免当前运行的网页视图WebView已改变,不再是之前发送JSAPI调用请求时的网页视图WebView了,从而进一步提升小程序和宿主程序之间通信的安全性。
3.2、小程序对回传的执行结果的处理
小程序在接收到宿主程序互传的包含进行合法性验证时从JSAPI调用消息中提取到的消息体和执行的结果之后,小程序会对回调消息的可信性进行验证。例如,在小程序接收到宿主程序回传的执行结果之后,进一步可以包括如下步骤:
获取当前运行的网页视图WebView的第二消息体;
将提取得到的消息体和第二消息体进行比较;
若提取得到的消息体和第二消息体不相同,则丢弃执行结果。
在本实施例中,当小程序接收到宿主程序回传的执行结果之后,小程序会首先获取当前运行的网页视图WebView的第二消息体,并将回传的执行结果中所包括的消息体与该第二消息体进行比较。如果执行结果中所包括的消息体和该第二消息体不一致,那么说明该回调结果不具有可信性,因此小程序会丢弃该回传的执行结果。如果一致,则说明回调结果可信,可以采纳回调的执行结果。
由此可见,本说明书实施例能够实现双向验证。
1)是小程序在调用宿主程序时,在JSAPI调用消息中自己带上消息体,宿主程序通过将直接从WebView获取得到的消息体和从该JSAPI调用消息中的消息体进行对比,以判断调用消息的合法性,即保证了信息来源的可信。
2)宿主程序至回传执行结果时,将合法性验证通过的消息体和功能的执行结果一起返回给小程序,然后由小程序在进行一次校验。也就是说,宿主程序是将信任的结果回传给了小程序,小程序再次对该回传信息的可信性进行验证。
下面以消息体同时包括域名信息url和结构信息dom为例,对上述三个部分作进一步说明。如图4所示,在一个实施例中,小程序和宿主程序进行通信的方法可以包括如下步骤:
步骤401:小程序发送携带有url和dom的调用消息给宿主程序;
本实施例中,小程序在发送调用消息之前,先从当前运行的网页视图WebView中获取到域名信息url和结构信息dom,并将该url、dom和所要进行宿主程序功能调用的请求一起汇聚成调用消息JSAPI_CALL_MSG发送给宿主程序。
步骤403:宿主程序从接收到的调用消息中提取消息体url和dom;
本实施例中,当宿主程序接收到小程序发送的调用消息之后,对该调用消息进行拆解,提取出其中的url信息和dom信息。比如,通过对调用消息JSAPI_CALL_MSG进行拆解,提取出url信息URL_FROM_JSAPI,以及dom信息DOM_FROM_JSAPI。
步骤405:宿主程序主动从小程序当前运行的网页视图中获取消息体;
本实施例中,宿主程序的容器通过WebView API主动从小程序当前运行的网页视图WebView中获取一次用于进行对照验证的url信息和dom信息,分别记为:URL_FROM_WEBVIEW和DOM_FROM_WEBVIEW。
步骤407:宿主程序对消息来源的合法性进行验证;
本实施例中,宿主程序在进行消息来源的验证时,是将从JSAPI中提取出的消息体和从WebView中主动获取到的消息体进行对比验证。即将URL_FROM_JSAPI和URL_FROM_WEBVIEW进行验证,以及将DOM_FROM_JSAPI和DOM_FROM_WEBVIEW进行验证,如果两者都同时相同,则说明该消息来源合法。
步骤409:宿主程序在验证合法时执行相应调用功能,并生成执行结果;
步骤411:宿主程序向小程序回传执行结果;
本实施例中,宿主程序在进行执行结果的回传时,不仅将执行调用消息所要调用的执行结果返回给小程序,而且将用于进行对照验证的 URL_FROM_WEBVIEW 和 DOM_FROM_WEBVIEW也同时回传给小程序。
步骤413:小程序对回传结果进行验证。
本实施例中,当小程序接收到回传结果之后,首先从当前运行的WebView中获取当前的url和dom,然后判断回传结果中所包含的URL_FROM_WEBVIEW和DOM_FROM_WEBVIEW与该次获取到的url和dom信息是否相同,不相同则丢弃回传结果。
如图5所示,本说明书一个实施例还提供了一种小程序和宿主程序进行通信的装置,该装置可以应用于宿主程序,包括:
调用消息接收模块501,配置为接收小程序发送的JSAPI调用消息;其中,JSAPI调用消息用于调用宿主程序的相应功能,且携带有小程序当前运行的网页视图WebView的消息体;
消息体提取模块502,配置为提取调用消息接收模块501接收到的JSAPI调用消息的消息体;
合法性验证模块503,配置为根据消息体提取模块502提取到的消息体对消息来源的合法性进行验证;
功能执行模块504,配置为在合法性验证模块503确定消息来源合法时,执行JSAPI调用消息所要调用的功能;
结果回传模块505,配置为将功能执行模块504得到的执行结果回传给小程序。
在一种可能的实现方式中,JSAPI调用消息包括:小程序当前运行的网页视图WebView的域名信息和结构信息;
消息体提取模块502在提取JSAPI调用消息的消息体时,配置成执行如下操作:
从JSAPI调用消息中提取WebView的域名信息;其中,域名信息用于表征当前运行的WebView的页面地址;
在一种可能的实现方式中,消息体提取模块502在提取JSAPI调用消息的消息体时,配置成执行如下操作:
从JSAPI调用消息中提取WebView的结构信息;其中,结构信息用于表征当前运行的WebView的页面结构数据。
在一种可能的实现方式中,合法性验证模块503在根据提取到的消息体对消息来源的合法性进行验证时,配置成执行如下操作:
从小程序当前运行的网页视图WebView中获取对照消息体;
将提取得到的消息体与对照消息体进行对比;
当提取到的消息体与对照消息体一致时,确定JSAPI调用消息的消息来源合法。
在一种可能的实现方式中,合法性验证模块503在将提取得到的消息体与对照消息体进行对比时,配置成将提取到的消息体中的域名信息和对照消息体中的对照域名信息进行对比。
在一种可能的实现方式中,合法性验证模块503在将提取得到的消息体与对照消息体进行对比时,配置成将提取到的消息体中的结构信息和对照消息体中的对照结构信息进行对比。
在一种可能的实现方式中,结果回传模块505,在将功能执行模块504得到的执行结果回传给小程序时,其执行结果包括:执行JSAPI调用消息所要调用的功能后得到的结果,和/或提取得到的消息体。
如图6所示,本说明书一个实施例还提供了一种小程序和宿主程序进行通信的装置,该装置可以应用于小程序,包括:
消息体获取模块601,配置为获取当前运行的网页视图WebView的消息体;
调用消息发送模块602,配置为将携带有消息体获取模块601获取到的消息体的JSAPI调用消息发送至宿主程序;其中,JSAPI调用消息用于调用宿主程序的相应功能;以及,
执行结果接收模块603,配置为接收宿主程序回传的执行结果;其中,执行结果为宿主程序对调用消息发送模块602发送的JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
在一种可能的实现方式中,消息体获取模块601在获取当前运行的网页视图WebView的消息体时,配置成执行获取当前运行的网页视图WebView的域名信息;其中,域名信息用于表征WebView的当前页面地址。
在一种可能的实现方式中,消息体获取模块601在获取当前运行的网页视图WebView的消息体时,配置成执行获取当前运行的网页视图WebView的结构信息;其中,结构信息用于表征WebView的页面结构数据。
在一种可能的实现方式中,执行结果包括:提取得到的消息体;如图7所示,应用于小程序的上述装置还可以包括:可信性验证模块604;
可信性验证模块604配置成执行如下操作:
获取当前运行的网页视图WebView的第二消息体;
将提取得到的消息体和第二消息体进行比较;
若提取得到的消息体和第二消息体不相同,则丢弃执行结果。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行说明书中任一个实施例中的方法。
本说明书还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现说明书中任一个实施例中的方法。
可以理解的是,本说明书实施例示意的结构并不构成对宿主程序和小程序的具体限定。在说明书的另一些实施例中,宿主程序和小程序可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本说明书方法实施例基于同一构思,具体内容可参见本说明书方法实施例中的叙述,此处不再赘述。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书描述的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (11)

1.小程序和宿主程序进行通信的方法,包括:
接收小程序发送的JSAPI调用消息;其中,所述JSAPI调用消息用于调用宿主程序的相应功能,且携带有所述小程序当前运行的网页视图WebView的消息体;
提取所述JSAPI调用消息的消息体;
根据提取到的所述消息体对消息来源的合法性进行验证;
在所述消息来源合法时,执行所述JSAPI调用消息所要调用的功能;以及,
将执行结果回传给所述小程序。
2.根据权利要求1所述的方法,其中,所述JSAPI调用消息包括:小程序当前运行的网页视图WebView的域名信息和结构信息;
所述提取所述JSAPI调用消息的消息体,包括:
从所述JSAPI调用消息中提取所述WebView的域名信息;其中,所述域名信息用于表征当前运行的WebView的页面地址;
和/或,
从所述JSAPI调用消息中提取所述WebView的结构信息;其中,所述结构信息用于表征当前运行的WebView的页面结构数据。
3.根据权利要求1所述的方法,其中,所述根据提取到的所述消息体对消息来源的合法性进行验证,包括:
从所述小程序当前运行的网页视图WebView中获取对照消息体;
将提取得到的消息体与所述对照消息体进行对比;
当提取到的消息体与所述对照消息体一致时,确定所述JSAPI调用消息的消息来源合法。
4.根据权利要求3所述的方法,其中,所述将提取得到的消息体与所述对照消息体进行对比,包括:
将提取到的消息体中的域名信息和所述对照消息体中的对照域名信息进行对比;
和/或,
将提取到的消息体中的结构信息和所述对照消息体中的对照结构信息进行对比。
5.根据权利要求1至4中任一所述的方法,其中,所述执行结果包括:
执行所述JSAPI调用消息所要调用的功能后得到的结果,和/或提取得到的所述消息体。
6.小程序和宿主程序进行通信的方法,包括:
获取当前运行的网页视图WebView的消息体;
将携带有所述消息体的JSAPI调用消息发送至宿主程序;其中,所述JSAPI调用消息用于调用宿主程序的相应功能;以及,
接收所述宿主程序回传的执行结果;其中,所述执行结果为所述宿主程序对所述JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
7.根据权利要求6所述的方法,其中,所述获取当前网页视图WebView的消息体,包括,
获取当前运行的网页视图WebView的域名信息;其中,所述域名信息用于表征所述WebView的当前页面地址;
和/或,
获取当前运行的网页视图WebView的结构信息;其中,所述结构信息用于表征所述WebView的页面结构数据。
8.根据权利要求6或7所述的方法,其中,所述执行结果包括:所述提取得到的消息体;
在接收所述宿主程序回传的执行结果之后,进一步包括:
获取当前运行的网页视图WebView的第二消息体;
将提取得到的消息体和所述第二消息体进行比较;
若提取得到的消息体和所述第二消息体不相同,则丢弃所述执行结果。
9.小程序和宿主程序进行通信的装置,包括:
调用消息接收模块,配置为接收小程序发送的JSAPI调用消息;其中,所述JSAPI调用消息用于调用宿主程序的相应功能,且携带有所述小程序当前运行的网页视图WebView的消息体;
消息体提取模块,配置为提取所述调用消息接收模块接收到的所述JSAPI调用消息的消息体;
合法性验证模块,配置为根据所述消息体提取模块提取到的所述消息体对消息来源的合法性进行验证;
功能执行模块,配置为在所述合法性验证模块确定所述消息来源合法时,执行所述JSAPI调用消息所要调用的功能;
结果回传模块,配置为将所述功能执行模块得到的执行结果回传给所述小程序。
10.小程序和宿主程序进行通信的装置,包括:
消息体获取模块,配置为获取当前运行的网页视图WebView的消息体;
调用消息发送模块,配置为将携带有所述消息体获取模块获取到的所述消息体的JSAPI调用消息发送至宿主程序;其中,所述JSAPI调用消息用于调用宿主程序的相应功能;以及,
执行结果接收模块,配置为接收所述宿主程序回传的执行结果;其中,所述执行结果为所述宿主程序对所述调用消息发送模块发送的JSAPI调用消息进行消息体提取,并根据提取得到的消息体进行消息来源的合法性验证,以及在消息来源合法时执行JSAPI调用消息所要调用的功能后得到的。
11.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-8中任一项所述的方法。
CN202111609072.2A 2021-12-27 2021-12-27 小程序和宿主程序进行通信的方法和装置 Pending CN114003412A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111609072.2A CN114003412A (zh) 2021-12-27 2021-12-27 小程序和宿主程序进行通信的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111609072.2A CN114003412A (zh) 2021-12-27 2021-12-27 小程序和宿主程序进行通信的方法和装置

Publications (1)

Publication Number Publication Date
CN114003412A true CN114003412A (zh) 2022-02-01

Family

ID=79932062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111609072.2A Pending CN114003412A (zh) 2021-12-27 2021-12-27 小程序和宿主程序进行通信的方法和装置

Country Status (1)

Country Link
CN (1) CN114003412A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117845A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Encoding labels in values to capture information flows
CN108200126A (zh) * 2017-12-19 2018-06-22 阿里巴巴集团控股有限公司 对象上传方法及装置
CN110297635A (zh) * 2019-06-27 2019-10-01 百度在线网络技术(北京)有限公司 页面的显示方法、装置、设备以及存储介质
CN110321228A (zh) * 2018-03-28 2019-10-11 腾讯科技(深圳)有限公司 原生方法的调用方法、装置、设备及计算机可读存储介质
CN111083093A (zh) * 2018-10-22 2020-04-28 中国移动通信集团浙江有限公司 调用端能力的方法和装置
CN111428237A (zh) * 2020-03-06 2020-07-17 支付宝(杭州)信息技术有限公司 一种攻击风险的识别方法、系统、装置和电子设备
CN111597113A (zh) * 2020-05-18 2020-08-28 北京百度网讯科技有限公司 小程序的验证方法、装置、设备及存储介质
CN111722935A (zh) * 2019-03-20 2020-09-29 阿里巴巴集团控股有限公司 页面端与原生端的通信方法、装置、电子设备及可读介质
CN113568841A (zh) * 2021-08-18 2021-10-29 支付宝(杭州)信息技术有限公司 一种针对小程序的风险检测方法、装置及设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117845A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Encoding labels in values to capture information flows
CN108200126A (zh) * 2017-12-19 2018-06-22 阿里巴巴集团控股有限公司 对象上传方法及装置
CN110321228A (zh) * 2018-03-28 2019-10-11 腾讯科技(深圳)有限公司 原生方法的调用方法、装置、设备及计算机可读存储介质
CN111083093A (zh) * 2018-10-22 2020-04-28 中国移动通信集团浙江有限公司 调用端能力的方法和装置
CN111722935A (zh) * 2019-03-20 2020-09-29 阿里巴巴集团控股有限公司 页面端与原生端的通信方法、装置、电子设备及可读介质
CN110297635A (zh) * 2019-06-27 2019-10-01 百度在线网络技术(北京)有限公司 页面的显示方法、装置、设备以及存储介质
CN111428237A (zh) * 2020-03-06 2020-07-17 支付宝(杭州)信息技术有限公司 一种攻击风险的识别方法、系统、装置和电子设备
CN111597113A (zh) * 2020-05-18 2020-08-28 北京百度网讯科技有限公司 小程序的验证方法、装置、设备及存储介质
CN113568841A (zh) * 2021-08-18 2021-10-29 支付宝(杭州)信息技术有限公司 一种针对小程序的风险检测方法、装置及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
卢晓丽,于洋: "《计算机网络基础与实践》", 30 September 2020, 北京理工大学出版社 *

Similar Documents

Publication Publication Date Title
CN107135073B (zh) 接口调用方法和装置
JP5579803B2 (ja) リモートサーバアクセスを認証するためのシステムおよび方法
CN103155513B (zh) 加速认证的方法和装置
CN102571846B (zh) 一种转发http请求的方法及装置
US8904521B2 (en) Client-side prevention of cross-site request forgeries
CN112131021B (zh) 一种访问请求处理方法及装置
CN109995776B (zh) 一种互联网数据验证方法及系统
CN111404695B (zh) 令牌请求验证方法和装置
CN107241306B (zh) 一种人机识别方法、服务端、客户端及人机识别系统
CN112150136A (zh) 一种应用中内嵌网页的支付方法、系统及装置
CN111949958B (zh) Oauth协议中的授权认证方法及装置
US20230291758A1 (en) Malware Detection Using Document Object Model Inspection
CN111464555B (zh) 一种基于客户端屏幕录像的文件签署确认方法以及业务服务器、认证服务器和客户端
CN112448930A (zh) 账号注册方法、装置、服务器及计算机可读存储介质
CN115022047B (zh) 基于多云网关的账户登录方法、装置、计算机设备及介质
CN112260983B (zh) 一种身份验证方法、装置、设备及计算机可读存储介质
CN110177096B (zh) 客户端认证方法、装置、介质和计算设备
CN111371811A (zh) 一种资源调用方法、资源调用装置、客户端及业务服务器
CN114003412A (zh) 小程序和宿主程序进行通信的方法和装置
US11539711B1 (en) Content integrity processing on browser applications
CN112748960A (zh) 一种进程控制方法、装置、电子设备及存储介质
US20230394151A1 (en) Protected qr code scanner using operational system override
JP2013003820A (ja) 情報処理装置及び情報処理方法
CN115361683B (zh) 一种业务访问方法、sim卡、服务器及业务平台
CN113938323B (zh) 基于jwt的防重放攻击方法、装置、设备以及存储介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20220201