1
queuey 2016-09-20 13:16:34 +08:00
解包有可能就被解出来了啊。 iOS 的话保存到钥匙串不好么?安卓应该也有类似的东西吧
|
2
LSBs OP @queuey 我是保存到 keychain 的. 我用的 sskeychain. 用 keychain 的话. 我还是要把账号保存到 usedefault,密码保存到 keychain. 因为 keychain 获取密码是要根据账号来的. 而 keychain 的账号. 根据 keychainserver 获取到的是个数组. 有可能是多个账号. 你是怎样解决这个问题的?
|
3
LSBs OP @LSBs 我个人感觉 APP 端, 保存账号密码是不安全的. 还是只保存 token.才更安全. 用户第一次登陆的时候保存服务器下发的 token. 服务器端开个可以直接用 token 来登陆的接口.
|
4
LSBs OP 我很疑惑. 不知道自己对不对
|
5
GentleSadness 2016-09-20 13:26:27 +08:00 via Android
手机经常换 IP ,所以如果用账号密码登录会多次读取数据库,先用账号密码登录一遍,获取 token ,然后 token 保存在 session 里,在短时间内就不用重复读数据库了
|
6
LSBs OP @GentleSadness 您的意思是 token 的意义在于, 用户登陆后的后续操作.请求不用再带上用户名和密码. 这样服务器可以减少查询数据库. 那我上面的想法 APP 端不保存用户密码, 只保存 token. 服务器开个服务器端开个可以直接用 token 来登陆的接口. 这样可行吗
|
7
lslqtz 2016-09-20 17:43:09 +08:00 via iPhone
是的,在浏览器端保存密码容易被 xss 。
|
8
queuey 2016-09-20 19:11:29 +08:00
@LSBs 用户名密码为一组 Key 保存在 keychain 里啊。然后 userdefault 中只保存 user 来确保当前登录情况和 ID 。 keychain 目前是安全的,怕就怕中间传输不安全+有别的用心不良的 APP 去撞库,所以要求 key 尽量保证复杂
|
9
queuey 2016-09-20 19:14:10 +08:00
@LSBs 用 token 登录是可行的,但是要保证 token 定时刷新即需要 accesstoken 和 refreshtoken 。
|
10
shubo83 2016-09-20 21:38:41 +08:00
用户名和密码存储不安全,也不要想着用 cookie/session 的方式来保证需要鉴权 API 的安全性(因为 session 会超时而 APP 有一个需求是比较长的时间是不需要登录的),所以 token 是比较好的选择,配合 mysql 或 redis 或其他存储方式灵活设定超时时间。
我这边的处理方式,欢迎纠错非常感谢:用户名和密码登录时候获取 token , APP 存储,需要鉴权访问的 API 带上这个 token,和 APP 约定超时时间,服务器把 token 以及对应的 user_id 存储在 redis 并设置超时时间,服务器接收这个 token 获得 user_id 进行逻辑处理,如果 token 找不到 user_id(可能 token 错误或 token 已经超时自动删除)就响应 error , app 获得 error 重新登录 |