- 文档
- Architectural overview of Cordova platform
- 创建你的第一个App
- Cordova平台支持
- Android平台指南
- Blackberry 10 Guides
- iOS Platform Guide
- OS X 平台指南
- Ubuntu Platform Guide
- Windows Platform Guide
- WP8 Guides
- 平台和插件版本管理
- 自定义app图标(Icon)
- 存储(Storage)
- 隐私指南
- 安全指南
- 白名单指南
- Plugin Development Guide
- Android Plugins
- BlackBerry 10 Plugins
- iOS Plugin Development Guide
- Windows Plugins
- Windows Phone 8 Plugins
- Using Plugman to Manage Plugins
- Embedding WebViews
- Next Steps
- Config.xml
- 事件
- CLI Reference
- Hooks Guide
- Plugin.xml reference documentation
- Battery Status
- Camera
- Console
- Contacts
- Device
- Device Motion
- Device Orientation
- Dialogs
- File
- File Transfer
- Geolocation
- Globalization
- Inappbrowser
- Media
- Media Capture
- Network Information
- Splashscreen
- Vibration
- Statusbar
- Whitelist
- Legacy Whitelist
白名单指南
外部域是应用无法控制的,而域名白名单则是一种控制访问外部域的安全模型。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中也有相同效果:
- minimum-tls-version (字符类型, 默认值'TLSv1.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论