android - 手机app用第三方登录后如何与服务端进行验证
巴扎黑
巴扎黑 2017-04-17 12:03:52
[Android讨论组]

手机app(android)用第三方登录后,获得唯一的一个uid标识,然后app通过类似 http://www.xxx.com/login?uid=3424234 这个url来将uid传递到服务端,查看数据库中有无这个uid,然后根据uid 在数据库查询有没有绑定的账号在做进一步的操作。

但这样的话很不安全,由于app很容易被反编译(或直接抓包),那个url很容易被获取,获取后就可以尝试替换各种uid进行登录了,尤其是新浪的uid,类似24856215,太容易被替换了。

有没有什么安全点的方法?
(另:accessToken的值是不是过期了不会变,改了相关平台的密码才会改变?)

巴扎黑
巴扎黑

全部回复(3)
阿神

直接传递 uid 是很不安全的,应该传递的是 access token。

以新浪微博为例,应该把 access token 发给服务器,在服务器使用 account/get_uid 获得用户真正 uid,并完成登录。

另,access token 可能会变(不知道现在超时时间是多久,反正不是永久),所以需要每次启动应用的时候都要去登录才行。

高洛峰

http://open.taobao.com/doc/detail.htm?id=118#s5

黄舟

你可以试试,能不能这样暴力猜出来(猜自己的帐号吧)。有可能人家设计的http://www.xxx.com/login?uid={uid}是一次性接口,只是为了用于获取access token,调用一次之后在调用不行了。如果真的可以多次猜的话就是app设计上的问题了,至少也应该把{uid}设计的复杂一些。

access token能在客户端得到的话就尽量少保存在服务端了,减少你的app和你的服务端之间通信过程暴露access token的风险。

OAuth2.0的都类似,access token有时间限制,就新浪微博而言,access token的超时和应用的级别有关,测试: 1天, 普通: 7天, 高级: 15天, 合作: 30天。
另外一般会有获取access token信息的接口,新浪的是oauth2/get_token_info,没必要每次打开应用都重新登陆,而且一般access token超时之后也只需要通过refresh token接口就能更换新令牌。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号