首页 > 手机app用第三方登录后如何与服务端进行验证

手机app用第三方登录后如何与服务端进行验证

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

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

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


你可以试试,能不能这样暴力猜出来(猜自己的帐号吧)。有可能人家设计的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接口就能更换新令牌。


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


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

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

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

【热门文章】
【热门文章】