我只是无法弄清楚这一点。我目前正在 Android 上构建一个相当大规模的应用程序。不过,我遇到了一些关于安全性和身份验证的问题......
场景:
我有一个应用程序通过 HTTP(稍后将实现 SSL)调用运行 PHP 和 MySQL 的服务器。当然我想使用现有的用户数据库,所以迁移到另一个数据库不是一个解决方案。我设法创建了“通过 Android 将用户注册到服务器”功能。我也做了一个工作登录,但这是问题开始的地方。
当我正在处理的 Android 应用程序中的用户通过/向应用程序添加、编辑、删除和同步服务器上的内容时,事情变得相当复杂。对我来说似乎有点太复杂了:)
问题:
当我从服务器端登录获得结果并通过 JSON 将其从服务器传递到 Android 时,连接断开,服务器端我没有登录(会话断开),而在电话上我是。如何使登录在服务器和 Android 上都保持不变,而无需再次登录?因此,从 Android 到服务器的后续调用是使用同一用户进行的,仍然经过身份验证。即我想要一种一次性登录(直到我注销),就像在 Spotify 应用程序(和许多其他应用程序)中一样。
如果我理解正确的话,正确实施 SSL 可以将密码以明文形式发送到服务器,而无需先对其进行哈希处理。它是否正确?
我无法停止思考这样一个事实,即 MIM 攻击会破坏我从 Android 发送到服务器的任何唯一 ID。我的第一个想法是在成功登录后将 Android 设备上的 UID 作为服务器的“密钥”。但是,如果该密钥落入坏人之手,与该 UID 关联的用户将受到威胁。我已经查看了 Android 上的 AccountManager,但在我的情况下它似乎有点过头了。
如果有人可以提供示例或至少是指导方针,我将不胜感激!
提前感谢!
编辑后添加的解决方案图
请注意,此图显示了应用程序的第一次启动。以后的初创公司不会显示登录/注册表格,而是使用 DUT。
// 亚历山大