天天看点

安卓客户端权限验证,模拟session验证,解决服务端接口的安全性问题

最近在学习安卓开发时发现公司的安卓客户端是没有身份验证信息的,只要登录成功了,就可以通过后台没有验证信息的去链接互联网的接口,无需验证,这样如果一旦被黑客瞄上,用户信息是很容易泄露的,对此我也向项目的pm提出了自己的建议,由于安卓客户端是采用http的post的请求,去获取服务器端的数据信息的,而直接使用安卓内置的HttpClient去发送http请求显然是不能携带cookise信息(关于session跟cookise之间的联系我在之前的一篇文章中说过,再次不再累述)的,所以我就想到了模拟session的方式去验证用户的信息

<b>具体实现:</b>

首先在服务器端声明2个全局静态字典,并提供添加字典的方式,字典的key为每次用户登录时随机生成的Guid,这样能保证用户之间不重复,dictionary1的键值组合是:key -&gt; Guid,value -&gt; 上次交互时间;dictionary2的键值组合:key -&gt; Guid,value -&gt; 用户身份信息(因为存储在服务端所以无需加密);这样在用户第一次登陆时验证dictionary1内是否存在该用户的登陆记录,如果没有则登陆,如果有则继续验证本次登陆时间与上次登陆时间的间隔,如果时间间隔超过了系统的要求则删除2字典内的记录,重新登陆。客户端每次把Guid都当成参数传递到服务端,已进行身份的验证。这样差不多就能保证系统所提供接口的安全性,其实由于客户端的登陆状态可以由该客户端自己判断,所以dictionary1可以省略,每次用户退出时,往服务端发一条信息即可让服务端删除该用户的本次登陆信息。

本文转自 tongling_zzu 51CTO博客,原文链接:http://blog.51cto.com/tongling/1189460

继续阅读