gpt4 book ai didi

node.js - ionic 应用程序中不受信任的 Node 代码 - 如何为我自己的应用程序定义和实现防火墙规则?

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:18 25 4
gpt4 key购买 nike

我可以选择哪些选项来更精细地控制我正在开发的应用程序的互联网访问?

我们正在开发一个 Ionic 应用程序,因此依赖于许多 Node 模块,这些模块本身就是不受信任的代码 (see HN discussion) 。由于内容是合理的,我想防止不受信任的人以不期望的方式发送任何数据的可能性。

为了让我的应用程序正常运行,它只需要与单个 IP 通信,但是我找不到在 Android 或 iOS list 中声明的​​方法来声明:仅允许与单个 IP/域通信.

有没有办法阻止我自己的应用程序(中的不受信任的代码)与其他任何地方进行通信?优选地,安装应用程序的用户不应该关心任何额外的步骤。

  1. 最好是 Android 或 iOs 平台允许在 list 中声明我想要限制互联网访问。我看到可以定义自定义权限和意图,但根据我的理解,这本身并不允许我定义受限的互联网访问。我可以声明限制我自己的应用程序对 list 中特定主机的互联网访问吗?
  2. 如果没有,我需要的是应用程序防火墙。通常,人们会安装防火墙并为该应用程序设置防火墙规则。但是,我不能要求应用程序用户安装和设置防火墙。有没有办法在应用程序安装过程中使用某些脚本直接设置 iftables 规则?
  3. 如果没有,由于基于 cordova,我的应用程序附带了自己的浏览器和 JS 运行时。我正在研究故意破坏 Node ,以便 socket.connect 忽略参数并仅连接到所需的硬编码域,发送数据并仅打开给定 IP 的套接字?然而,这需要我改变 c/c++,我不是这方面的专家。有没有一种简单干净的方法来做到这一点?

感谢您的提示!

<小时/>

最佳答案

了解您的问题后,我建议您使用Cordova的白名单域功能。

特定于平台的白名单规则可在 res/xml/config.xml 中找到。

您需要更改<access>应用程序的 config.xml 文件中的元素,用于启用或限制对特定域的网络访问。

默认为<access origin="*" /> ,这意味着您的应用可以访问所有域。

现在假设您希望应用程序通信的 IP 地址是 192.168.10.1,那么访问元素应修改为

<access origin="192.168.10.1" />

它将限制您的应用与除 192.168.10.1 之外的所有 IP 地址的通信

此外,在 Android 和 iOS 上,网络请求白名单(见上文)无法过滤所有类型的请求(例如 <video> 且 WebSocket 不会被阻止)。因此,除了白名单之外,您还需要在 HTML 文件中实现 Content-Security-Policy 元标记,以降低 XSS 风险。

这使您能够定义可以从何处加载资源,从而防止 Web View 从任何其他位置加载数据。这使得攻击者更难向您的网站注入(inject)恶意代码。

如果你有一个主文件(即index.html),并且所有其他页面都加载在该主文件中,那么你只需要在该主文件中定义上述元标记,否则你必须编写CSP元标记在所有 HTML 文件中。

要了解有关如何使用 CSP 元标记的更多信息,请点击下面的链接

How does Content Security Policy work?

我还建议您阅读 Cordova 的官方文档:

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/

关于node.js - ionic 应用程序中不受信任的 Node 代码 - 如何为我自己的应用程序定义和实现防火墙规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829783/

25 4 0