android 数据传输安全

一 对敏感数据进行传输时应该采用基于SSL/TLS的HTTPS进行传输

由于移动软件大多只和固定的服务器通信,我们可以采用“证书锁定”(certificate pinning)方式在代码更精确地直接验证服务器是否拥有某张特定的证书。实现“证书锁定”的方法有二种:一种是实现X509TrustManager接口,另一种则是使用keystore。

二 登录验证和传输内容加密

1. 服务器接收到app发送的用户名和密码后,验证用户名和密码是否正确。
如果错误则返回错误信息。如果验证正确,生成一个随机的不重复的token字符串(例如"daf32da456hfdh"),在redis或memcache中维护一个映视表,建立token字符串和用户信息的对应关系表,例如,把token字符串"daf32da456hfdh"和用户id"5"对应起来。

2. 服务器把token字符串返回给app,app把这个token字符串保存起来,作为登录的验证。

3. 当需要验证用户身份的操作时,必须要把token字符串传给服务器验证身份。
例如,api "test.com/user/update"是更新用户的信息,必须要验证用户的身份.当调用api "test.com/user/update"时,把token字符串"daf32da456hfdh"放在url上,变成"test.com/user/update?token=daf32da456hfdh" .
当服务器接收到这个api请求,知道要验证用户身份的,于是,就把参数中token的值"daf32da456hfdh"取出来,在(1)中建立的token字符串和用户信息的对应关系表查找,如果发现没这个token值的,则返回验证失败的信息。如果发现有这个token值,则获取这个用户的信息,进行相关的更新操作。
4. 当用户退出登录时,需要通过调用api,让服务器把这个用户对于的token字符串删除.
例如,api "test.com/user/logout"是退出登录的api,也要验证用户身份, 则调用"test.com/user/logout?token=daf32da456hfdh" 。当服务器接到退出登录的api请求时,在(1)中建立的token字符串和用户信息的对应关系表查找token字符串,把token和用户信息都删除即可。

5. 加密登录和传输数据

   整个过程如下:

  • 用户名密码 + https + url签名(url+时间戳+随机字串)链接+请求时间+保唯一的字串
  • 服务器返回token:aes(约定算法)=》(token+随机secret(就取上面那个签名中的16位))
  • app保存token后,以后每次机通信都通过  aes (token + 内容)  传输

 

参考:

http://www.cnblogs.com/harry335/p/5194917.html

http://blog.csdn.net/zihao2012/article/details/44310527

 

转载于:https://my.oschina.net/kun123/blog/875725

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值