首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
服务器和客户端安全通信
时间:
2015-06-29 18:11:33
阅读:
161
评论:
0
收藏:
0
[点我收藏+]
标签:
在做app开发跟服务端通信时,必然要保证安全性,一般情况下都是加密来搞,那怎么做比较简单且安全呢;有几种办法,优缺点都有,我们来看看
1,简单点,明文传输,非登录态其实没啥好说的,看看登录态,用户登录后,服务器给客户端分配tokenid,类似pc端的sessionid一样,那么客户端后续请求服务器都要带上tokenid,服务器检查tokenid是否已经登录,然后检查权限等,如果认为已登录没啥问题就会执行正常的业务逻辑,因此这个tokenid很重要,除此之外,我们还需要对请求数据做签名,我们用不可逆的加密来做,比如说加盐后的md5以及加盐后的sha-256等算法,然后保证传输过程中数据不被篡改就行了。
2,https方式,如果想这样做,你必须向ca申请一个证书安装到你的服务器上,然后凯奇443端口通信,当然这么做是安全的;但你需要花钱购买ca证书,以及通讯效率会比较低,因为建立连接的过程是非对称加密的,后续的通信还好,除非银行等金融领域对安全性要求比较高时,这样做没问题。但你得保证你服务器别被攻击哈,如果服务器被攻击,服务器证书或者私钥泄露,那就完了,攻击者可以做中间人攻击,你懂的。
3,对称加密,比如aes或者blowfish这种算法,密钥长度长一些,安全性还是很可以的,但是有个问题,用这种算法需要privateKey,你客户端代码如果保存privateKey去加密,那就没什么意义了,坏人可以反编译你的android的源码的,所以密钥是绝对不可以写死在客户端代码的,那只能从服务端获取了,且是临时保存在客户端通信用用,密钥可以是固定的,也可以是不固定的,跟人或者设备session相关,先看看固定的密钥吧,好办,可以采用https类似的机制来做,获取对称加密密钥前,我们先通过rsa等非对称加密请求服务器端,获取对称密钥保存在客户端很长时间,再加上session验证和参数签名,安全性还是很有保障的;
4,还有一种,跟方案3比较类似,客户端在本地生成一个唯一的tokenid,客户端请求服务器获取对称密钥的时带上这个tokenid,服务器为每个tokenid生成一一对应的对称加密密钥,每台设备请求的加密密钥都不一样,安全性更高一些,然后用户登录后给tokenid授予已登录的权限,这个做法跟方案1中的不太一样,方案1是服务器生成tokenid下发,本方案恰恰相反;
服务器和客户端安全通信
标签:
原文地址:http://my.oschina.net/glarystar/blog/472097
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!