Cordova 白名单插件 cordova-plugin-whitelist Android IOS

参考 Cordova 官网
白名单
下载

$ cordova plugin add cordova-plugin-whitelist
$ cordova prepare

支持版本
Android 4.0.0 或以上

Navigation Whitelist
Webview 可允许系统打开的链接,可以过滤前缀或后缀





















Intent Whitelist
允许App在浏览器可打开的链接





















如果没有 标签,所有外部url都不可以访问。默认已经有很多允许的url了推荐你根据自己的app自行缩小允许跳转的范围。

在android上等同于发一个BROWSEABLE intent。
这个白名单对插件不生效只对超链接生效,相当于window.open()。
Network Request Whitelist
控制从哪个网络请求资源文件(通过cordova native hooks),已经不推荐使用,没有CSP安全。为了webview的历史遗留功能,不支持CSP(Content Security Policy )默认配置















白名单不能阻止远程网站的重定向到非白名单的网站。用CSP缓解webview重定向到非白名单网站。

安卓也默认允许请求https://ssl.gstatic.com/acces...

CSP (content security policy)
控制资源文件请求地址(直接从webview)
在android ios上 网络请求上面提到的网络请求白名单(network request whitelist)不能过滤所有请求(例如video)websocket也没有被阻止。所以除了白名单以外还应该在所有的页面应用csp标签

android 4.4以上支持html csp声明示例















IOS 白名单
ATS
Application Transport Security
Cordova 4.0 以上不要求装 cordova-plugin-whitelist了,然而在ios里也有配置
cordova cli自动把 转成了合适的ATS:

  1. TLS最小版本 (默认TLS v1.2)
  2. requires-forward-secrecy (Boolean, 默认'true')
  3. requires-certificate-transparency (Boolean, defaults to 'false', iOS 10才有)

这部分不是必须的,我们的项目中是没有的.

白名单不支持Android API10及以下,WP8,Iframe,XMLHTTPRequest。 这意味着攻击者可以在iframe载入任何domain和脚本,能直接拿到cordova的JS对象和相应的原声JAVA对象。在构建项目的时候你应该把这个考虑进去。实践中应该确认Android API高于10,尽量避免用iframe加载外部内容,用 inAppBrowser plugin 或 other third-party plugins。

你可能感兴趣的:(cordova)