返回介绍

白名单指南

发布于 2019-12-08 22:22:29 字数 3582 浏览 1005 评论 0 收藏 0

外部域是应用无法控制的,而域名白名单则是一种控制访问外部域的安全模型。Cordova提供了一项可配置的安全策略来定义哪些外部站点可以访问。默认情况下,新的app被配置成可以访问任何站点。然而在发布到生产环境前,你应该制定一份白名单,限制应用可以访问的域名和子域名。

对于Android(从4.0版本起),Cordova的安全策略是通过一个插件接口来扩展的。你的app应该使用cordova-plugin-whitelist,因为它比之前的Cordova版本提供了更好的安全性和可配置能力。尽管实现白名单插件是可能的,但还是不推荐这样做,除非你的app有非常明确的安全策略需要。查看cordova-plugin-whitelist获取更多的使用和配置详情。

对于其他平台,Cordova遵守W3C Widget Access规范。规范依赖于使用app的config.xml文件里的<access>标签,它是用来声明可以访问的特定域名的。对项目而言,则是基于命令行界面描述的CLI工作流,该文件位于项目的根目录。另外,对于一些特定平台,文件的位置会在后面的段落列出来。

以下的例子展示了<access>白名单语法:

  • 访问google.com:

    <access origin="http://google.com" />
    
  • 访问安全的google.com (https://):

    <access origin="https://google.com" />
    
  • 访问子域名maps.google.com:

    <access origin="http://maps.google.com" />
    
  • 访问google.com下的所有子域名, 例如mail.google.com和docs.google.com:

    <access origin="http://*.google.com" />
    
  • 访问所有域名,例如google.com和developer.mozilla.org:

    <access origin="*" />
    

这是新创建的CLI项目的默认值。

你要意识到一些网站会自动从主页重定向到一个不同的url,比如使用https协议或者对特定国家区分的域名。举例来说,http://www.google.com会重定向到使用SSL/TLS的网址https://www.google.com,然后甚至可能重定向到一个地理国家的域名,如https://www.google.co.uk。这样的场景会要求你在初始的白名单上作修改或者补充。在你创建白名单的时候请考虑这点。

注意:白名单只适用于主要的Cordova webview,而不支持内置浏览器webview和在系统浏览器中打开链接。

Android 白名单

如上所说,查看cordova-plugin-whitelist获取更多详情。对于4.0.0之前的cordova-android,可以查看这篇文档的旧版本。

iOS 白名单

Cordova-ios版本4.0需要安装cordova-plugin-whitelist插件,但是它的配置详情同样适用于iOS。<allow-intent><allow-navigation>标签对于cordova-ios 4.x和以上版本来说是新的内容,可以查看cordova-plugin-whitelist文档获取这些标签的使用详情。

对于4.0.0之前的cordova-ios,可以查看这篇文档的旧版本。

应用传输安全(ATS)是IOS 9(Xcode 7)的新特性。它相当于为你的app创建了一个白名单。Cordova CLI 会自动转化<access><allow-navigation>标签为合适的ATS指令。

<access><allow-navigation>标签支持以下两个属性,在两个属性在ATS中也有相同效果:

  1. minimum-tls-version (字符类型, 默认值'TLSv1.2')
  2. requires-forward-secrecy (布尔类型, 默认值true)

查看ATS Technote获取更多信息。

BlackBerry 10 白名单

白名单规则不在www/config.xml中。

BlackBerry 10的通配符使用和其他平台的不同,有两种方式:

  • 任何通过XMLHttpRequest访问的内容需要明确定义。origin="*"配置在这种情况下不起作用。作为一种选择,BlackBerry配置中描述的WebSecurity优先级可以禁用所有的网络安全措施:

    <preference name="websecurity" value="disable" />
    
  • 可以选择设置*.domain,再设置附加的subdomains属性为true。默认情况下应该设为false

    <!-- 仅仅可以访问google.com -->
    <access origin="http://google.com" subdomains="false" />
    
    <!-- 允许访问maps.google.com和docs.google.com -->
    <access origin="http://google.com" subdomains="true" />
    
    <!-- 允许访问所有域名,包括本地`file://`协议 -->
    <access origin="*" subdomains="true" />
    

更多的支持信息,请查看BlackBerry文档access element。

Windows Phone 白名单

Windows Phone 8的白名单规则在app的config.xml文件中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文