黑马程序员技术交流社区

标题: 【上海校区】cordova-plugin-whitelist 协议白名单配置整理 [打印本页]

作者: 梦缠绕的时候    时间: 2018-8-21 09:30
标题: 【上海校区】cordova-plugin-whitelist 协议白名单配置整理

一、cordova-plugin-whitelist 插件用于配置协议的白名单。在Cordova引用创建时自动添加了这个插件。

说明:

1.Cordova的版本要求 Cordova4.0以上

2.Android 的版本要求 4.0.0或更高版本

3.包括Navigation WhiteList(配置href可以打开的链接),Intent Whitelist(配置超链接或window.open()),Network Request Whitelist(配置允许请求的域名白名单),

Content Security Policy(配置单个页面的安全处理)。

4.Cordova项目中的域名白名单是一个用来控制外部域名访问的安全模块,比如http://google.com默认的安全机制是没有网络访问权限。开发者可以定义特定域名和子域名的访问权限。

规范
域名白名单是W3C Widget Access 规范的基础。在部件访问(Widget Access)规范中,<access>元素用来定义特定域名的访问权限,在以后的更新中Cordova平台白名单将趋近 W3C Widget Access规范。特别的,每个平台必须定义自身的白名单。

二、安装命令



三、Navigation Whitelist 导航白名单

控制WebView 本身可以导航到。只使用与顶级导航。怪癖:Android也适用于非HTTP iframe(S)方案。

默认情况下,只允许导航 file:// 本地文件。如果你想导航到其他自定义的协议的话,需要修改 config.xml

示例1:Cordova 配置WebView可以打开外部链接

示例2:



四、Intent Whitelist 意图白名单

控件的URL的应用程序可以要求系统打开。默认情况下,不允许外部URL。


在Android上,这等同于发送型浏览的意图。

这个名单不适用于插件,只有超链接和调用open()窗口。

示例:

五、Network Request Whitelist 网络请求白名单

控制网络请求(图片、XHRs,等)是否允许。

注:建议使用Content Security Policy ,这是更安全的。这个名单是历史做不支持CSP。

默认情况下,不锁定任何请求为:

<access origin="*" />

示例:



六、Content Security Policy

1.控制网络请求(图片,XHRs,等)是允许(通过WebView直接)。

2.在Android和iOS,网络请求的白名单(见上图)是不是能够过滤所有类型的请求(例如<视频>和WebSockets没有堵塞)。所以,除了白名单,你应该使用一个安全政策的内容<meta />标签上的所有页面。

示例1:Cordova页面加载外网图片失败,Refused to load the image

示例:

七、使用实例:

语法
访问 google.comhttp://google.com

访问安全连接 google.com (https://):https://google.com

访问子域名 maps.google.com:http://maps.google.com

访问 google.com上的全部子域名 (比如. mail.google.comdocs.google.com):http://*.google.com

全部域名 (诸如 google.combaidu.com):*

Android:细节:
白名单规则见下载包res/xml/cordova.xml,通过元素<access origin="..." />.声明
安卓支持白名单的全部语法
语法:
访问 google.com:<access origin="http://google.com" />

iOS详细

iOS不支持域名协议(诸如. http:// a或https://) .
语法访问 google.com 和安全连接 google.com (https://):google.com
访问子域名 maps.google.com:maps.google.com
访问全部子域名 google.com (诸如 mail.google.comdocs.google.com):*.google.com
访问全部域名(诸如 google.combaidu.com):*
IOS(*)通配符比W3C Widget Access 规范更灵活。
访问所有子域名和顶级域名 (.com, .net,等):*.google.*



作者: 不二晨    时间: 2018-8-23 17:15
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2