Cordova 插件白名单

17 Mar 2025 | 6 分钟阅读

在 Cordova 4.0 或更高版本中,您可以使用此特定插件实现白名单策略来导航您的应用程序 WebView。 在我们继续之前,让我们讨论一下域白名单。 插件白名单可以定义为负责控制对外部域的访问的安全模型。 Cordova 主要提供一个可配置的安全策略,用于定义可以访问哪些外部站点。 如果我们想了解插件的兼容性,它在 Android 4.0.0 或更高版本中受支持。

安装

要在您的应用程序中添加此插件,您必须安装它。 您可以从 Cordova CLI 或 npm 安装该插件。 为此,您需要键入以下命令

导航白名单

导航白名单的主要任务是控制 WebView 本身可以导航到的 URL。 应该注意的是,此特定插件仅适用于顶级导航。 另请注意,file:// URL 是唯一允许的默认导航。 您需要将 <allow-navigation> 标签添加到应用程序的 config.xml 文件中以允许其他 URL,

示例

Intent 白名单

此白名单负责控制应用程序允许打开的那些 URL。 为此,我们需要在 config.xml 中添加 <allow-intent> 标签。 以下代码演示了如何完成

如果未使用 <allow-intent> 标签,则意味着不允许外部 URL 请求。 默认情况下,自由的允许意图条目集包含在默认的 Cordova 应用程序中。 建议根据每个应用程序的要求缩小范围。

如果我们谈论 Android 平台,它类似于发送类型为 BROWSEABLE 的意图。

基本上,此白名单不适用于插件。 它仅用于超链接和对 window.open() 的调用。

网络请求白名单

为了控制允许通过 cordova 本机钩子发出的网络请求(图像、XHR 等),使用了网络请求白名单。

我们建议您使用内容安全策略,因为它更安全。

我们需要在 config.xml 文件中添加 <access> 标签。 下面的代码显示了如何完成

在上面的代码中,我们使用了一组 <access> 标签。 如果未使用 <access> 标签,则仅允许对 file:// URL 的请求。 但是,默认情况下,默认的 Cordova 应用程序包含 <access origin="*">。

注意:为了减少重定向到非白名单网站,对于支持 CSP 的那些 Webview,应遵循 CSP 规则。

内容安全策略

它用于控制允许使用 WebView 直接发出的网络请求,例如图像、XHR 等。

如果我们谈论 AndroidiOS 平台,网络请求白名单无法过滤所有类型的请求,例如 <video> & WebSockets。 您应该对所有页面使用带有白名单的内容安全策略 <meta> 标签。

CSP 声明示例

要查看当前的的安全策略,请查看 index.html 文件的 head 元素内部。

请参阅以下代码

这是默认配置。 以下代码负责允许来自同一来源和 example.com 的所有内容。

也可以允许所有内容,但将 CSSJavaScript 限制为同一来源。 请参阅以下代码

更改行为

如果我们谈论各种平台上的白名单行为的差异,可以通过平台注意到一些差异,或者这些白名单功能基于底层原生技术的关注点和功能。

  • iOS 支持使用 access 和 allow-navigation 6.0.0 (Cordova iOS 4.0.0) 插件不需要,因为它内置于 iOS 平台中。
  • Android 平台支持使用 access、allow-intent、allow-navigation。 意图是 Android 的特定概念。
  • Windows 10: 如果我们谈论 Windows 平台,Windows 支持像 AndroidiOS 平台一样的 allow-navigation 元素。 但支持的 access 元素在导航中的行为略有不同。 它允许特定的 URL,但为了降低风险,Cordova 和插件 API 已被禁用。 遵循 CSP (内容安全策略)规则来控制 Windows 10 中的图像访问规则、XHR、CSS。
  • Windows 8.0、8.1 和 Windows Phone 8.1: 它不支持导航到 InAppBrowser 之外的外部 URI,原因是基本平台的限制。
  • Windows Phone 8 (WP8): 此平台不支持 allow-navigation 或 allow-intent,它使用 access 元素的旧定义。

下一主题#