在做一个手机应用,请问如下方式进行用户身份验证是否合理。

2015-04-07 17:18:17 +08:00
 thinkif
用户登录进来后系统生成一个Token并返回给客户端,以后客户端所有查询均发送由『用户名+设备ID+Token+时间戳』取经过哈希计算的结果,同时传给服务器用户名和时间戳。

服务器根据用户名查询到用户的设备ID和Token,用传递过来的时间戳做同样的运算,如果结果相同则认为验证通过。

时间戳给个有效期如果超过有效期则直接拒绝。

本应用要求用户绑定手机,所以设备ID绑定后不变。

请问这个思路是否合理。
1753 次点击
所在节点    问与答
9 条回复
virusdefender
2015-04-07 18:13:04 +08:00
没问题吧
honeycomb
2015-04-07 18:19:18 +08:00
怎么都想拿设备ID呢,这个东西给伪造值呢?
thinkif
2015-04-07 20:17:22 +08:00
@honeycomb
有什么别的办法绑定设备么?
另外是个内部应用,绑定设备是为了便于管理
honeycomb
2015-04-07 20:30:58 +08:00
@thinkif

苹果就拿不到直接的设备ID
虽然可以随机生成一个丢keychain,但恢复出厂后也会消失
thinkif
2015-04-07 20:35:13 +08:00
@honeycomb
那没事,后台有授权管理,接触绑定就可以了。

现在就是想论证一下身份验证是否有不妥的地方
honeycomb
2015-04-08 09:20:01 +08:00
@thinkif 拿设备串号就是不妥呀
thinkif
2015-04-08 10:57:32 +08:00
@honeycomb
已感谢,给你回回血 :)

重点不是设备ID,或者说我不用设备ID,也不验证设备唯一性,光说这个校验的思路是否有问题,有没有其他更好的方式。

之前在网上找了很多,大概都是差不多的方式:登录获取Token,本地计算出Sign,可能算法会略有不同,服务器校验Sign并考虑过期时间。

在这发帖子就是想问这样是否合理,是否有更好的方法值得尝试。
honeycomb
2015-04-08 14:25:58 +08:00
@thinkif

抱歉我说的偏激

应该更正一下:
以广告、营销的用户追踪为目的情况下不应记录可永久/半永久唯一识别设备的信息

拿Android来说
IMEI/MEID
MAC
Android ID
都不能获取

不能跨应用共享同一家用户追踪方案提供者的数据
thinkif
2015-04-08 20:52:46 +08:00
@honeycomb
你想的复杂了,如同我在三楼回复时提到的,这是个内部应用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/182161

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX