【发布时间】:2016-04-01 15:21:55
【问题描述】:
到目前为止,我主要为 Android 创建较小的应用和游戏,但现在我正在创建一个拥有大量用户和比高分更合理的数据的大应用。
我通常的做法是只为所有带密码的用户创建一个表,使用 HTTP(S) 调用通过简单的登录屏幕进行身份验证,仅此而已。
不过,我想为这个应用改进一些事情:
安全传输
如果我想加密用户的密码,我需要在哪里做呢?在设备上,甚至在发送之前? (如果网络不安全,例如公共 WiFi 热点)或者在服务器上更好,然后将其写入数据库?还是我应该只使用 SQL 的加密?
自动登录
我希望用户能够在注销之前保持登录状态 - 我该怎么做才能最好?不仅在安全方面,而且在用户体验方面也是如此。
我的研究表明,使用 AccountManager 最好保存用户名和密码,并在应用启动时自动进行身份验证。还有什么我在这里遗漏的安全风险吗?
访问控制
通常,我只希望应用程序发出的每个调用都是有效的,因为用户在没有登录的情况下无法访问除了登录屏幕之外的任何内容。但是我如何最好地验证用户的请求以确保它不是攻击者?我不能只在每个请求中发送用户名/ID,所以我可能需要在每次登录时生成的会话令牌?还是有更好的方法?
还有什么我忘了考虑的吗?
【问题讨论】:
标签: android security authentication