3

我只是无法弄清楚这一点。我目前正在 Android 上构建一个相当大规模的应用程序。不过,我遇到了一些关于安全性和身份验证的问题......

场景:

我有一个应用程序通过 HTTP(稍后将实现 SSL)调用运行 PHP 和 MySQL 的服务器。当然我想使用现有的用户数据库,所以迁移到另一个数据库不是一个解决方案。我设法创建了“通过 Android 将用户注册到服务器”功能。我也做了一个工作登录,但这是问题开始的地方。

当我正在处理的 Android 应用程序中的用户通过/向应用程序添加、编辑、删除和同步服务器上的内容时,事情变得相当复杂。对我来说似乎有点太复杂了:)

问题:

  1. 当我从服务器端登录获得结果并通过 JSON 将其从服务器传递到 Android 时,连接断开,服务器端我没有登录(会话断开),而在电话上我是。如何使登录在服务器和 Android 上都保持不变,而无需再次登录?因此,从 Android 到服务器的后续调用是使用同一用户进行的,仍然经过身份验证。即我想要一种一次性登录(直到我注销),就像在 Spotify 应用程序(和许多其他应用程序)中一样。

  2. 如果我理解正确的话,正确实施 SSL 可以将密码以明文形式发送到服务器,而无需先对其进行哈希处理。它是否正确?

我无法停止思考这样一个事实,即 MIM 攻击会破坏我从 Android 发送到服务器的任何唯一 ID。我的第一个想法是在成功登录后将 Android 设备上的 UID 作为服务器的“密钥”。但是,如果该密钥落入坏人之手,与该 UID 关联的用户将受到威胁。我已经查看了 Android 上的 AccountManager,但在我的情况下它似乎有点过头了。

如果有人可以提供示例或至少是指导方针,我将不胜感激!

提前感谢!

编辑后添加的解决方案图

描述身份验证机制的图像

请注意,此图显示了应用程序的第一次启动。以后的初创公司不会显示登录/注册表格,而是使用 DUT。

// 亚历山大

4

1 回答 1

3

向 Android 应用程序发出某种形式的短期身份验证令牌。他们需要在每个请求中传递它,并且您将在您的 Web 应用程序中检查它。断开连接并不会结束会话,如果是这样,您的 Web 应用程序中有错误:修复它。在 Android 中,只要你使用同一个 HttpClient 实例,它就会继续使用同一个 session,不需要什么特别的。

无论您做什么,都不要推迟实施 SSL,现在就去做。

于 2012-12-14T03:30:38.910 回答