掌桥专利:专业的专利平台
掌桥专利
首页

一种基于WebView访问本地文件的方法、装置及存储介质

文献发布时间:2024-04-18 19:58:30


一种基于WebView访问本地文件的方法、装置及存储介质

技术领域

本申请涉及移动互联网领域,尤其涉及一种基于WebView访问本地文件的方法、装置及存储介质。

背景技术

浏览器通过严格的沙箱机制避免网页任意访问和获取本地文件,从而确保本地文件的安全性,不受到浏览器显示不安全网页时可能发起的攻击。用户通过网页input控件主动触发系统文件是允许网页访问用户的主要途径。通过主动触发的方式往往能够满足电脑端网页对本地文件访问和获取的要求,但在移动端,更多的业务往往不希望过多地要求仅能通过每一次的用户的主动触发才能使得网页访问和获取用户的某一文件,这极大的降低了用户的使用体验。通过继承了电脑端沙箱机制的WebView无法通过网页直接动态访问用户存在手机本地的图片、视频等文件数据,进而依赖本地文件数据如照片、视频、语音文件等的业务形态无法在网页端实现。

发明内容

有鉴于此,本申请提供一种基于WebView访问本地文件的方法、装置及存储介质,使得移动端网页能够在不引入触发的情况下安全地访问和获取移动端的本地文件,提升用户体验。

本发明第一方面提供一种基于WebView访问本地文件的方法,包括:

获取待返回网页的本地文件的本地路径;

将所述本地路径转化为本地文件协议地址;

其中,所述本地路径与所述本地文件协议地址一一映射;

将所述本地文件协议地址返回至所述网页;

所述网页请求至少一个所述本地文件的所述本地文件协议地址;

WebView拦截所述网页发起的每一个对所述本地文件的请求,若在第一映射库中存在所述本地文件与所述网页的网址的关联,则基于所述本地文件协议地址获取所述本地文件,加载所述网页;否则,基于WebView网络协议加载所述网页;

其中,所述第一映射库为网址与所述网址对应的允许上传的本地文件的映射。

在一些实施例中,所述基于WebView访问本地文件的方法还包括:对将所述本地路径转化为的所述本地文件协议地址进行加密,获得加密本地文件协议地址,所述加密采用随机的加密算法;记录所述本地文件协议地址对应采用的加密算法,或,记录所述本地文件对应采用的加密算法。

在一些实施例中,所述第一映射库包括第一子映射库及第二子映射库;

所述第一子映射库为所述本地文件与所述加密本地文件协议地址的一对一映射关系,或,所述第一子映射库为所述本地文件与表征所述加密本地文件协议地址的获得方式的一对一映射关系;

所述第二子映射库为所述网址与所述本地文件的一对一或一对多的映射关系。

在一些实施例中,对所述网页发起的每一个对所述本地文件的请求,判断所述网页对应的网址与所述本地文件,在所述第二子映射库中是否存在映射关系;

若所述网页对应的网址与所述本地文件,在所述第二子映射库中存在映射关系,

判断所述本地文件与所述加密本地文件协议地址,在所述第一子映射库中是否存在映射关系,

否则,基于WebView网络协议加载所述网页;

若所述本地文件与所述加密本地文件协议地址在所述第一子映射库中存在映射关系,

基于所述加密本地文件协议地址获取所述本地文件,加载所述网页,

否则,基于WebView网络协议加载所述网页;

或,

判断所述本地文件与所述加密本地文件协议地址,在所述第一子映射库中是否存在映射关系;

所述本地文件与所述加密本地文件协议地址,在所述第一子映射库中存在映射关系,判断所述网页对应的网址与所述本地文件,在所述第二子映射库中是否存在映射关系,否则,基于WebView网络协议加载所述网页;

若所述网页对应的网址与所述本地文件,在所述第二子映射库中存在映射关系,基于所述加密本地文件协议地址获取所述本地文件,加载所述网页,否则,基于WebView网络协议加载所述网页。

在一些实施例中,若所述网页需要获取的所述本地文件多余一个,利用WebView网络IO多线程拦截所述网页发起的对多余一个的所述本地文件的请求,并执行多线程的判断及基于判断结果获取所述本地文件加载所述网页,或,基于WebView网络协议加载所述网页。

在一些实施例中,将所述本地路径转化为所述本地文件协议地址的方法为:在所述本地文件的所述本地路径前增加表征WebView支持的协议的头部;所述文件协议地址保留与所述本地文件相同的文件名后缀。

在一些实施例中,获取待返回网页的本地文件的本地路径的方法为:

通过JavaScript到Native的通讯方式,或,通过全局变量的方式获取请求的待返回网页的本地文件的本地路径。

在一些实施例中,将所述本地文件协议地址返回至所述网页的方法为:

将所述本地文件协议地址通过NativeJSI的JavaScript回调通知所述网页,或,通过WebView执行JavaScript的API设置到所述网页JavaScript全局变量。

本发明第二方面提供一种基于WebView访问本地文件的装置,包括:

本地路径获取单元,所述本地路径获取单元被配置为获取待返回网页的本地文件的本地路径;

地址转化单元,所述地址转化单元被配置为将所述本地路径转化为本地文件协议地址;

其中,所述本地路径与所述本地文件协议地址一一映射;

网页加载单元,所述网页加载单元被配置为将所述本地文件协议地址返回至所述网页;及,被配置为执行所述网页请求至少一个所述本地文件的所述本地文件协议地址;

判断单元,所述判断单元被配置为执行WebView拦截所述网页发起的每一个对所述本地文件的请求,若在第一映射库中存在所述本地文件与所述网页的网址的关联,则基于所述本地文件协议地址获取所述本地文件,加载所述网页;否则,基于WebView网络协议加载所述网页;

第一映射库,所述第一映射库为网址与所述网址对应的允许上传的本地文件的映射。

本发明第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一项所述基于WebView访问本地文件的方法的步骤。

本发明通过构建本地文件对应的本地文件协议地址的生成逻辑,并基于此设置不同网址与不同的所述网址对应的允许上传的本地文件的映射关系,支持WebView网页级别的数据隔离,使得移动端网页能够在不引入触发的情况下安全地访问和获取移动端的本地文件,提升用户体验。

附图说明

图1为一示例性实施例示出的基于WebView访问本地文件的方法的流程图。

图2为一示例性实施例示的基于WebView访问本地文件的方法的判断流程图。

图3为另一示例性实施例示的基于WebView访问本地文件的方法的判断流程图。

图4为一示例性实施例示的基于WebView访问本地文件的装置的示意性框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

目前,行业内基于WebView访问本地文件主要采用以下两种方式:

一是,为手机移动端建立一个本地Http文件代理服务器,由于允许所有应用或所有WebView网页以Http协议方式访问静态资源本地目录。

二是,为客户端通过拦截WebView域名网络请求方式访问本地文件,此一般适用针对含有URL网络资源地址文件进行离线本地文件命中缓存。

然而,第一种方式无数据安全性隔离设计,通常只适用于移动端应用开发调试阶段,第二种方式不适用于手机本地照片、音视频等网页主动访问本地文件的方式,用户体验差,且同样缺乏数据安全性隔离设计。

有鉴于此,本发明通过设置网络的网址与基于本地文件路径形成的本地文件协议地址的白名单,建立指定网页能够脱离主动触发才能上传的映射关系,通过网络请求的方式在避免浏览器沙箱限制来安全访问本地文件的同时满足文件的安全性要求。

图1为本发明一示例性实施例中,一种基于WebView访问本地文件的方法的流程图。

请参照图1,一种基于WebView访问本地文件的方法包括以下步骤:

S101、获取待返回网页的本地文件的本地路径。

在应用场景业务需要获取本地文件时,网页请求与业务有关的本地文件列表,确定与业务有关的本地文件的本地路径。在一些实施方式中,网页请求与业务有关的本地文件列表的方式可以为:通过JavaScript到Native的通讯方式,或,通过全局变量的方式获取请求的本地文件列表及待返回网页的本地文件的本地路径。

具体的,通过JavaScript到Native的通讯方式请求获取本地文件列表及待返回网页的本地文件的本地路径例如采用native_jsi.getFileList;全局变量的方式获取本地文件列表及待返回网页的本地文件的本地路径例如采用global_local_files。

当然,上述仅为获取本地文件列表及待返回网页的本地文件的本地路径的实现示例,不作为限定当业务存在获取本地文件需要的情况下的对本地文件列表及待返回网页的本地文件的本地路径的触发和获得的唯二方式。

S102、将所述本地路径转化为本地文件协议地址。其中,所述本地路径与所述本地文件协议地址一一映射。

以S101通过JavaScript到Native的通讯方式获取到的本地文件列表及待返回网页的本地文件的本地路径为例,当接受到Native或服务端侧业务返回的收集本地文件列表及待返回网页的本地文件的本地路径后,将所有待返回网页的本地文件的本地路径以列表的形式转换为本地文件协议地址。

例如,若需要返回网页的本地文件为一位于mifile的jpg格式的图片,该图片在本地路径的地址myfile.local.com/274F6C49B3E31A0C.jpg,通过在本地文件的本地路径前增加表征WebView支持的协议的头部,转化为的本地文件协议地址可以为:mkfile://myfile.local.com/274F6C49B3E31A0C.jpg、http://myfile.local.com/274F6C49B3E31A0C.jpg等。

又例如,若需要返回网页的本地文件为一位于mifile的mp4格式的食品,该图片在本地路径的地址myfile.local.com/234DJCNU4290CL23.mp4,通过在本地文件的本地路径前增加表征WebView支持的协议的头部,转化为的本地文件协议地址可以为:mkfile://myfile.local.com/234DJCNU4290CL23.mp4、http://myfile.local.com/234DJCNU4290CL23.mp4等。

为了在后续步骤中,WebView可以方便地读取并能够确定调用相应插件使用上述文件,文件协议地址保留与本地文件相同的文件名后缀,例如常用的本地文件后缀如jpg、png、mp4、mov、mp3等。当本地文件以二进制流返回给WebView后,WebView可以通过文件协议地址的.之后的后缀确定需调用的读取和展示插件,避免在文件读取和在网页展示过程中不必要的冗余步骤。

通过上述方式形成的本地文件协议地址与本地文件的本地路径一一映射,使得在后续通过本地文件协议地址获取本地文件时,获取对应的唯一的本地文件。

可以理解的是,为提高数据的安全性,保护用户的隐私,可以在生成本地文件协议地址的过程中设置加密流程,以加密本地文件协议地址作为S105步骤中,被WebView拦截后在作为白名单的第一映射库中的识别。

以下为一可行的包含加密流程的本地文件协议地址的生成方法。

设置另一映射库,用于记录本地文件采用的随机的加密方式,以便于在S105的步骤中,WebView拦截所述网页发起的每一个对所述本地文件的请求,判断在第一映射库中存在所述本地文件与所述网页的网址的关联时,建立本地文件与所述网页的网址之间采用的随机的加密方式的关联。

通过随机的加密方式将本地协议地址转化为加密本地协议地址。由于本地路径与本地文件协议地址一一映射,其映射关系随着随机的加密方式传递,即,本地文件与加密本地协议地址也为一一映射关系,使得在后续通过加密本地文件协议地址获取本地文件时,获取对应的唯一的本地文件。

示例性的,加密方式可以在丰富的加密算法中任一选择,以提高加密流程的随机性,使得加密本地协议地址具有更高的不可预测性。例如,基于摘要算法的加密算法,如MD、SHA、HMAC,基于对称加密的加密算法,如DES、AES,基于非对称加密的加密算法,如DSA、ECC、RSA等。更为具体的,MD可以优选MD2、MD4、MD5;SHA可以优选SHA-0、SHA-1、SHA-2、SHA-224、SHA-256、SHA-384、SHA-512;HMAC可以优选HMACMD2、HMACMD4、HMACMD5、HMACSHA1、HMACSHA256、HMACSHA384、HMACSHA512、HMACSHA224;采用椭圆曲线的ECC可以优选ECC、ECDSA、ECDHE,参数体系可以涉及secp192k1、secp224k1、secp256k1、secp384r1、secp521r1。

基于随机的从丰富的加密算法库中选择任一作为本地文件协议地址转化为加密本地文件协议地址的转化方式,使得在不获知本地文件采用何种随机的加密方式的映射关系的条件下,难以获取解密后的本地文件协议路径及本地文件。即,采用随机的加密方式及加密方式本身两者构建了双重的加密流程,使得即使他人通过本地文件地址构建了本地文件协议地址,当在不获知本地文件采用何种随机的加密方式的映射关系的条件下,也无法通过网页读取本地文件,上述双重加密的方式进一步保证了用户数据的安全性。

S103、将所述本地文件协议地址返回至所述网页。

与S101对应的一些实施例中,将所述本地文件协议地址返回至所述网页:通过JavaScript到Native的通讯方式,或,通过全局变量的方式。

具体的,通过JavaScript到Native的通讯方式例如采用通过native_jsi.getFileList的JavaScript回调通知网页;通过全局变量的方式例如WebView执行JavaScript的APIevaluateJavaScript设置到网页JavaScript全局变量,更进一步例如global_local_files。

同样的,上述仅为将所述本地文件协议地址返回至所述网页的实现示例,不作为限定将所述本地文件协议地址返回至所述网页的唯二方式。

当然,对应增设加密流程的实施例,该步骤为将所述加密本地文件协议地址返回至所述网页。

S104、所述网页请求至少一个所述本地文件的所述本地文件协议地址。

网页获取本地文件协议地址的列表后,针对网页上的业务需要,对需要读取的本地文件对应的本地文件协议地址发起请求。同样的,对应增设加密流程的实施例,该步骤为对需要读取的本地文件对应的加密本地文件协议地址发起请求。

可以理解的是,网页请求本地文件的所述本地文件协议地址时,采用预定义的协议请求文件数据资源。

S105、WebView拦截所述网页发起的每一个对所述本地文件的请求,若在第一映射库中存在所述本地文件与所述网页的网址的关联,则基于所述本地文件协议地址获取所述本地文件,加载所述网页;否则,基于WebView网络协议加载所述网页。其中,所述第一映射库为网址与所述网址对应的允许上传的本地文件的映射。

通过设置不同网址与不同的所述网址对应的允许上传的本地文件的映射的第一映射库,支持WebView网页级别的数据隔离,使得不同网址间文件访问能力完全隔离。对于安全的网址,在用户存在授权打开特定本地文件对于上述网址开放权限的历史行为下,在后续长时间、任意次数对于该网址的浏览过程中,无需用户主动触发或其他冗余操作,即可根据上述网址所涉及的业务需求获取用户的本地文件,提升了用户体验。对于不安全的网址,或未曾授权任一本地文件开放的陌生网址,本实施例能够基于WebView进行有效拦截,避免用户在移动终端上的本地文件被读取,安全性高,隐私性强。

在一些实施例中,WebView拦截网页发起的网络请求,将资源URI地址传递给装置作为上述第一映射库的白名单,并进行识别判断,如果资源URI地址命中白名单,则获取映射的手机本地文件路径,读取本地文件数据,并将本地文件按照二进制流返回给WebView;如果资源URI地址未命中白名单,则通过WebView默认网络协议格式进行网页加载。

通过设置拦截机制后允许的二进制流作为本地文件的返回方式具有较高的传输效率,与例如字符串等其他传输机制相比,避免了冗余信息,提升了传输速度。

若所述网页需要获取的所述本地文件多余一个,利用WebView网络IO多线程拦截所述网页发起的对多余一个的所述本地文件的请求,并执行多线程的判断及基于判断结果获取所述本地文件加载所述网页,或,基于WebView网络协议加载所述网页。

本实施例通过网络层进行本地文件资源加载,充分利用WebView网络IO多线程处理能力,避免本地文件的数据传递到JavaScript时阻塞JavaScript执行线程。

以下为一可行的包含加密流程的WebView拦截判断并基于判断结果获取本地文件的方法。

可以理解的是,在包含加密流程的本地文件获取方法中,WebView拦截网络请求后,首先识别加密本地文件协议地址,加密本地文件协议地址为一种加密代理域名的地址。

为使得随机的加密的算法与被加密的文件形成映射关系,进一步设置第一映射库包括第一子映射库及第二子映射库。

具体的,第一子映射库为所述本地文件与所述加密本地文件协议地址的一对一映射关系,或,所述第一子映射库为所述本地文件与表征所述加密本地文件协议地址的获得方式的一对一映射关系。

具体的,所述第二子映射库为所述网址与所述本地文件的一对一或一对多的映射关系。

由此通过第一子映射库,使得为加密本地协议地址具有更高的不可预测性从而采用随机的加密方法获得加密本地文件协议地址的生成过程,与依托加密本地文件协议地址的读取过程,两者能够形成完整的配合。

在一些实施例中,在WebView拦截所述网页发起的每一个对所述本地文件的请求后,对所述网页发起的每一个对所述本地文件的请求,并进行下属判断。

图2为一示例性实施例示的一种基于WebView访问本地文件的方法的判断流程图。

请参照图2,基于WebView访问本地文件的方法的判断流程包括:

S201、第一判断流程:判断所述网页对应的网址与所述本地文件,在所述第二子映射库中是否存在映射关系。

S2011、若所述网页对应的网址与所述本地文件,在所述第二子映射库中存在映射关系,则进行S202、第二判断流程。

S2012、若所述网页对应的网址与所述本地文件,在所述第二子映射库中不存在映射关系,则进行S2032。

S202、第二判断流程:判断所述本地文件与所述加密本地文件协议地址,在所述第一子映射库中是否存在映射关系。

S2021、若所述本地文件与所述加密本地文件协议地址在所述第一子映射库中存在映射关系,则进行S2031。

S2022若所述本地文件与所述加密本地文件协议地址在所述第一子映射库中不存在映射关系,则进行S2032。

S2031、基于所述加密本地文件协议地址获取所述本地文件,加载所述网页。

S2032、基于WebView网络协议加载所述网页。

图3为另一示例性实施例示的一种基于WebView访问本地文件的方法的判断流程图。

请参照图3,基于WebView访问本地文件的方法的判断流程包括:

S301、第一判断流程:判断所述本地文件与所述加密本地文件协议地址,在所述第一子映射库中是否存在映射关系。

S3011、若所述本地文件与所述加密本地文件协议地址在所述第一子映射库中存在映射关系,则进行S202、第二判断流程。

S3012、若所述本地文件与所述加密本地文件协议地址在所述第一子映射库中不存在映射关系,基于WebView网络协议加载所述网页。

S302、第二判断流程:判断所述网页对应的网址与所述本地文件,在所述第二子映射库中是否存在映射关系。

S3021、若所述网页对应的网址与所述本地文件,在所述第二子映射库中存在映射关系,基于所述加密本地文件协议地址获取所述本地文件,加载所述网页。

S3022、若所述网页对应的网址与所述本地文件,在所述第二子映射库中不存在映射关系,则基于WebView网络协议加载所述网页。

通过上述的判断步骤与上述两个子映射库对应,即,基于判断是否在第一子映射库中存在映射关系,确定随机的加密算法是否对应该本地文件,从而避免本地文件的路径被篡改;基于判断是否在第二映射库中存在映射关系,确定针对该指定网址,对应的哪些本地文件属于白名单可以获取,而其他的本地文件均不可以获取,从而解决对不同网址开发的本地文件的隔离,提升本地数据安全性,保护用户隐私。

可以理解的是,网页获取到本地文件后,读取图片、视频、声音等文件,并完成网页所需的必要的上层业务。

综上,示例性实施例通过构建本地文件对应的本地文件协议地址的生成逻辑,并基于此设置不同网址与不同的所述网址对应的允许上传的本地文件的映射关系,支持WebView网页级别的数据隔离,使得移动端网页能够在不引入触发的情况下安全地访问和获取移动端的本地文件,提升用户体验。示例性实施例设置本地文件的本地路径到加密本地协议地址的加密方式的随机性,提升了数据的安全性,有效避免篡改的网址访问,保证了用户隐私。示例性实施例通过网络层进行本地文件资源加载,能充分利用WebView网络IO多线程处理能力,避免数据传递到JavaScript时阻塞JavaScript执行线程。

前面是对本发明提供的基于WebView访问本地文件的方法的具体介绍,与前述基于WebView访问本地文件的方法实施例相对应,下面将介绍本发明提供的基于WebView访问本地文件的方法的装置。

图4为一示例性实施例的基于WebView访问本地文件的装置的示意性框图。

请参照图4,基于WebView访问本地文件的装置包括:

本地路径获取单元401,所述本地路径获取单元被配置为获取待返回网页的本地文件的本地路径。

地址转化单元402,所述地址转化单元被配置为将所述本地路径转化为本地文件协议地址;其中,所述本地路径与所述本地文件协议地址一一映射;

网页加载单元403,所述网页加载单元被配置为将所述本地文件协议地址返回至所述网页;及,被配置为执行所述网页请求至少一个所述本地文件的所述本地文件协议地址。

判断单元404,所述判断单元被配置为执行WebView拦截所述网页发起的每一个对所述本地文件的请求,若在第一映射库中存在所述本地文件与所述网页的网址的关联,则基于所述本地文件协议地址获取所述本地文件,加载所述网页;否则,基于WebView网络协议加载所述网页。

第一映射库405,所述第一映射库为网址与所述网址对应的允许上传的本地文件的映射。

本实施例的装置,可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

与对应的基于WebView访问本地文件的方法类似的,示例性实施例通过构建本地文件对应的本地文件协议地址的生成逻辑,并基于此设置不同网址与不同的所述网址对应的允许上传的本地文件的映射关系,支持WebView网页级别的数据隔离,使得移动端网页能够在不引入触发的情况下安全地访问和获取移动端的本地文件,提升用户体验。示例性实施例设置本地文件的本地路径到加密本地协议地址的加密方式的随机性,提升了数据的安全性,有效避免篡改的网址访问,保证了用户隐私。示例性实施例通过网络层进行本地文件资源加载,能充分利用WebView网络IO多线程处理能力,避免数据传递到JavaScript时阻塞JavaScript执行线程。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本申请提供的任一信息展示方法的步骤。

具体的,适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CDROM和DVD-ROM盘。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

相关技术
  • 一种访问请求处理方法及装置、一种计算设备及存储介质
  • 一种访问请求处理方法、装置、设备及可读存储介质
  • 一种灰度版本页面访问方法、装置、计算机设备及计算机存储介质
  • 一种访问权限开放方法、装置、服务器及存储介质
  • 一种业务访问方法、装置、终端、服务器及存储介质
  • 一种基于区块链的访问控制方法、装置及存储介质
  • 一种基于模拟访问的网站风险评估方法、装置及可存储介质
技术分类

06120116497898