gpt4 book ai didi

iphone - 验证从移动 (iPhone) 应用程序到 ASP.Net Web API 的请求(对我的设计请求反馈)

转载 作者:行者123 更新时间:2023-12-03 18:11:30 26 4
gpt4 key购买 nike

我正在设计一个带有移动伴侣的网站(最初仅适用于 iPhone)。该网站将是一个 ASP.Net MVC 3 应用程序。我还将有一个 ASP.Net Web API 站点 (MVC 4) 来向 iPhone 应用程序公开服务。 iPhone 应用程序将有自己的表单来捕获用户的用户名和密码,并将其发送到 JSON header 中的 Web API。

我想从一开始就考虑安全性,而不是事后考虑。无论如何,我不是安全专家。我已经做了大量研究,以了解其他人如何处理来自 Web 服务的移动应用程序客户端的身份验证。我想我已经提出了一个不错的解决方案,它不涉及连接到第三方 oAuths。

我将不胜感激你们任何人可以提供的任何和所有意见、建议、批评和一般 WTF。 :)

我最大的担忧是:

  • 确保对 Web API 的调用获得授权
  • 最小化重放攻击的风险(因此在下面的调用中使用时间戳)

  • iPhone 应用程序将被开发如下:
    两个字符串被硬编码到 iPhone 应用程序中(每个用户的值相同):
  • 应用程序 ID 这是一个字符串,用于标识访问 Web API 的客户端类型(iPhone、Android、Windows 手机等)。
  • 应用程序的散列 SaltThis 是一个字符串,用于为用户不可知的请求添加散列。

  • 两个字符串存储在 iPhone 应用程序的本地数据库中(每个用户唯一的值):
  • API 用户访问 token 这是 Web API 认证成功后提供给客户端的字符串( token ),允许客户端访问 Web API,而无需在每个请求中发送用户名和密码。
  • 用户的散列 SaltThis 是一个字符串,用于对针对已建立的用户帐户发出的请求进行散列加盐。


  • iPhone 将通过以下方式调用 Web API:
    API 方法:创建帐户
    客户端发送:
  • 新帐户数据(用户名、密码、名字、姓氏等)
  • 应用 ID
  • UTC 时间戳
  • UTC 时间戳的哈希值 + 应用程序 ID 的哈希值加盐应用程序的哈希值

  • API 返回:
  • 新用户的散列盐这里的想法是,在创建帐户时,我可以使用应用程序的硬编码盐,因为如果盐出来(通过反编译或其他方式)不会带来巨大的安全风险。
    但是对于访问和修改用户数据的方法,我将使用仅由该用户拥有的盐,因此攻击者无法使用它来冒充其他人。

  • API 方法:获取帐户(用于获取用户在网站上创建但尚未在 iPhone 上同步的帐户的哈希盐。当用户尝试在 iPhone 上登录并且 iPhone 检测到它已没有该用户名的记录。)

    客户端发送:
  • 用户名
  • 密码(用应用程序的哈希盐散列)
  • 应用 ID
  • UTC 时间戳
  • UTC 时间戳的哈希值 + 应用程序 ID 的哈希值加盐应用程序的哈希值

  • API 返回:
  • 现有用户的哈希盐

  • API方法:登录(认证)
    客户端发送:
  • 用户名
  • 密码(用用户的哈希盐散列)
  • 应用 ID
  • UTC 时间戳
  • UTC 时间戳的哈希值 + 用用户的哈希盐加盐的应用程序 ID

  • API 返回:
  • API 用户访问 token

  • API 方法:任何命令(即创建帖子、更新配置文件、获取消息等...)
    客户端发送:
  • 命令数据
  • API 用户访问 token
  • 应用 ID
  • UTC 时间戳
  • UTC 时间戳的哈希值 + 应用程序 ID + API 用户访问 token 用用户的哈希盐加盐
  • 最佳答案

    我的建议

  • 身份验证和授权。在 2 个不同的服务器上构建它(在某些项目中我也使用了 3 个)。反向代理服务器对此非常有用。在一台服务器上进行身份验证并在另一台服务器上对其进行授权。

  • 这是我认为在使用 Web API 的移动安全中需要的最重要的步骤。
  • 封装一切。
  • 对所有安全信息使用 SSL。就我而言,我将它用于一切。
  • 对于您的时间戳,请选择您可以授权的合适时间。不要把它写得太短,因为你的应用程序会变慢或太长,因为网络嗅探器可以访问数据包。

  • 如果您想要一个 3 服务器架构 对于您的请求,还有一个应用程序 key ,您可以使用它来生成访问 key (来自服务器 1)。此访问 key 将验证您的请求,在成功验证(来自服务器 2)后,您可以使用该 key 来授权来自另一台服务器(服务器 3)的请求

    你提到的要求是标准规范。真的看不出有什么问题。

    关于iphone - 验证从移动 (iPhone) 应用程序到 ASP.Net Web API 的请求(对我的设计请求反馈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889556/

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