是否有必要在服务器端开发具有会话令牌控制的 iPhone Native App?

Posted

技术标签:

【中文标题】是否有必要在服务器端开发具有会话令牌控制的 iPhone Native App?【英文标题】:Is it necessary to develop an iPhone Native App with session token controlling at server-side? 【发布时间】:2012-03-09 03:38:21 【问题描述】:

大家好

我正在开发一个 iPhone 原生应用程序(其中包括 webview),它可以与我的服务器端 web 服务进行通信。 系统有用户管理模块,用户可以登录/退出,修改自己的信息。

自带网站等常用案例,出于安全考虑,必须有令牌或其他东西。 那么 iPhone 原生应用呢?因为我的webservice只能从app访问,所以我觉得已经足够安全了,是不是也需要在session token的方式下实现?

谢谢,最好的问候。

【问题讨论】:

【参考方案1】:

你将如何在没有令牌的情况下进行身份验证?

我相信当您输入用户/密码时,此身份验证对 + device_id 将(使用 SSL)发送到服务器,然后在身份验证成功的情况下服务器返回会话令牌(会话可能不受时间限制,这取决于您) 用于此 device_id。登录名和令牌保存在程序的某个位置(例如,在默认的键/值存储中)。密码不应该保存在程序的任何地方。

当用户启动您的应用程序时,应用程序将登录、令牌和设备 ID 发送到服务器,服务器检查并说 OK+session_key 或 NOK。在 NOK 的情况下,您从应用程序的存储中删除登录名和令牌并再次显示登录表单。如果响应正常 - 您发送 HTTP 请求 + 会话密钥,服务器会回复您。像这样的……

PS:我认为应该是这样的,但是我在Web方面没有太多经验。

【讨论】:

嗨,@OgreSwamp,感谢您的回复。事实上,我只是使用 uname 和 pwd 来识别/验证每个用户。我可以在服务器端获取会话令牌,但我没有使用它,只是认为它只能从我的应用程序访问。顺便说一句,我正在考虑在它发布之前,我会将它更改为 SSL 连接。谢谢。 1) 您是否每次都要求输入登录名/密码? 2)您如何验证它与输入密码的用户是同一用户? 3) 什么会阻止我从浏览器向您的应用发送 HTTP 请求?您仅从应用程序提供对 Web 服务的访问这一事实并不能提供任何保护免受攻击。 1)A:用户注销后,必须重新登录才能使用该应用程序; 2)A:我不验证同一个用户,因为他/她只知道密码属于他/她自己。 3)A:我在服务器端做了一些事情,它只能从我的应用程序访问,但不能从任何浏览器访问,包括 iPhone 中的内置 safari。谢谢。

以上是关于是否有必要在服务器端开发具有会话令牌控制的 iPhone Native App?的主要内容,如果未能解决你的问题,请参考以下文章

如何跟踪具有访问令牌的用户是否仍具有有效会话?

令牌身份验证是不是使会话变得不必要?

AWS - React Native - 注册、登录 - 在客户端和服务器端生成会话令牌

是否在服务器端存储未解码的 jwt 令牌?

刷新的 OAuth2 令牌具有无效签名 (Azure AD OAuth2)

何时需要使用令牌保护表单(CSRF 攻击)?