gpt4 book ai didi

ios - 将数据备份到服务器时验证用户

转载 作者:行者123 更新时间:2023-12-01 18:31:07 26 4
gpt4 key购买 nike

注意:虽然我在 iOS 应用程序的上下文中提出了这个问题,但我不认为它仅限于在该特定操作系统上运行的应用程序。

我正在开发一个 iOS 应用程序,它将用户数据备份到服务器,并且我试图找出在服务器端验证被更新的用户实际上是真实用户的最佳方法。每个用户都有一个 id (uid)。如果这就是我所依赖的服务器端,那么我想这个过程会是这样的:

  • 用户第一次运行应用程序
  • 在应用程序中创建帐户,该应用程序与服务器通信以在服务器上创建帐户并获取唯一的“用户 ID”(uid)
  • 应用程序存储此 uid 以便在与服务器的后续通信中识别用户

  • 但是,如果有人要破解他们 iPhone 上的应用程序,他们可以更改用户 ID 值,然后立即让他们访问/允许他们修改其他用户的数据。

    我正在考虑的当前解决方案是用户收到 2 个唯一 ID、uid(只是一个自动递增的数字)和一个更长、更复杂的 key 字符串。因此,与服务器的所有通信都必须同时发送 uid 和 key 。服务器将验证它们是否匹配,以确保用户确实是应用程序所说的那个人。

    所以,我的问题有两个:
  • 这是实现这一目标的正确方法吗?还是我应该采用其他一些标准方法?
  • 如果这是正确的方法,那么生成唯一 key 的推荐方法是什么?
  • 最佳答案

    首先,如果您愿意,您可以使用更复杂的值作为用户 ID(例如 UUID)。随着服务的扩展,单调递增的 ID 变得难以管理。

    当安全网站在浏览器上留下安全 cookie 以记住 session 时,您会遇到同样的问题。这些 cookie 确实包含用户 ID,但必须防止篡改。这通常是通过在发送回之前在服务器上对 cookie 进行签名来完成的。

    所以你要做的是:

  • 在服务器上生成用户 ID,并使用它来创建某种“身份验证 token ”以供客户端登录。
  • 使用只有您的服务器知道的 key 对服务器上的身份验证 token 进行签名。
  • 将身份验证 token 发送到客户端,并在其中存储所有后续登录。通过 HTTPS 传输身份验证 token 以防止其他人在网络上窥探它。

  • 当应用程序登录时,将身份验证 token 发送到服务器。如果它被黑客入侵,签名验证将失败,您将知道拒绝客户端。

    考虑在签名 token 中也包含一个时间戳,这样它会在一段时间后过期,迫使服务器定期重新生成一个身份验证 token ,这样可以在你的 key 被泄露的情况下保护你。除非用户自己有一个共享的 secret /密码,否则他很难完全做到这一点,他也可以使用它来定期进行身份验证。取决于你需要走多远。

    其他注意事项:如果您对用户的所有了解都是他们生成的 UID,那么您无法让该用户稍后从不同的 iOS 设备返回并在那里恢复他们的帐户,对吗?一般来说,如果用户将在他们的帐户中创建他们以后想要访问的任何“有值(value)”的东西,您可能希望创建一个更传统的用户帐户,并以电子邮件地址和密码等为后盾,这样他们就可以重新安装您的应用程序后再次访问该帐户。 (这可能与您的情况相关,也可能不相关。)

    关于ios - 将数据备份到服务器时验证用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704767/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com