有没有办法保护数据不被 PWA 抓取?

Is there a way to protect data from being scraped in a PWA?

假设我有一位客户花费了大量时间和金钱来创建自定义数据库。因此需要额外的数据安全性。他们担心,如果他们允许从普通网络应用程序访问数据库中的信息,那么这些信息可能会被删除。安全登录是不够的;有人可以登录然后抓取数据。就像任何其他 Web 应用程序一样,PWA 无法防止这种情况。

我的总体意见是,敏感数据在必须安装的混合应用程序上会得到更好的保护。对于这个项目,我倾向于使用 React-Native 或 Ionic。

我错了吗?有没有办法保护数据不被 PWA 抓取?

无论技术如何,都无法保护浏览器客户端可见的数据 - 简单 HTML 或 PWA/hybrid 应用程序。

虽然你可以让它变得更难。

  1. 对每个 minute/hour/day 客户端可以获取的信息数量实施限制。超限的可以blocked/sued/whatever.

  2. 您可以 return 一些数据作为图像而不是文本。会使提取过程更加困难,但会使您的应用复杂化并会使用更多带宽。

如果我们谈论的是 native/hybrid 应用程序,它可以添加更多层以使其更安全:

  • 使用 HTTPS 连接并强制检查有效证书。
  • 如果您可以检查特定证书,这样它就不会被中间人替换,那就更好了。

我想 iOS 应用程序会比 Android 更安全,因为 Android 更容易反编译,并且 运行 修改版本删除了限制。

同样,速率限制似乎是最具成本效益的解决方案。

除了速率限制之外,您还可以添加某种模式限制。例如,如果客户端以接近限制的固定间隔请求数据,则认为请求来自机器人并且数据正在被废弃是合乎逻辑的。

HTTPS 会对从您的 API 检索到的数据进行加密,因此中间人不可能 'sniffed'。 存储在 Cache 和 IndexedDB 中的数据在某种程度上是加密的,这使得访问变得困难。 您应该做的是保护对身份验证背后的数据的访问。 获得存储数据的唯一方法是打开开发人员工具并查看 InsdexedDB 中的数据。现在您只能看到响应已缓存在缓存数据库中。

正如 Alexander 所说,混合或本机应用程序不会比 Web 应用程序更好地保护数据。