服务器和客户端安全通信

在做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下发,本方案恰恰相反;

时间: 2024-08-08 17:25:43

服务器和客户端安全通信的相关文章

PHP、Java、C#实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为

简介 应用基于HTTP POST或HTTP GET请求发送Open API调用请求时,为了确保应用与REST服务器之间的安全通信,防止Secret Key盗用.数据篡改等恶意攻击行为,REST服务器使用了参数签名机制.应用在调用Open API之前,需要为其所有请求参数计算一个MD5签名,并追加到请求参数中,参数名为“sign”.REST服务器在接收到请求时会重新计算签名,并判断其值是否与应用传递过来的sign参数值一致,以此判定当前Open API调用请求是否是被第三者伪造或篡改. 应用在调用

Ubuntu ssh服务器和客户端的安装和使用

1. 安装服务器端 sudo apt-get install openssh-server 确认是否开启ssh ps -e| grep ssh 如果有sshd进程表示启动了. 配置文件 /etc/ssh/sshd_config 2. 启动.停止.重启 启动 sudo /etc/init.d/ssh start 停止 sudo /etc/init.d/ssh stop 重启 sudo /etc/init.d/ssh restart 退出ssh exit 3. 客户端登录 SecureCRT 5.1

Windows操作系统下搭建Git服务器和客户端。

本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配置,简单易用.客户端是采用的TortoiseGit工具,UI操作,省去输入命令的麻烦,对于windows用户来说更易于使用. 所需软件: Git服务器端: BONOBO GIT SERVER,下载最新版:http://bonobogitserver.com/ Git客户端: msysgit,下载最新

yum介绍及 基于yum服务器和客户端例子

因为都知道安装linux软件包rpm 很好用:但是不能解决软件包的个别依赖关系:所以安装数据包时出现依赖时.yum到可以解决这类数据包依赖关系:而且还能便于管理大量数据包更新的问题:它的特点  .可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf)  ,自动解决增加或删除rpm包时遇到的倚赖性问题,保持与RPM数据库的一致性这也是它的优势.因此解决数据包的依赖关系:也是基于服务器和客户端的一种应用. 首先呢 介绍一下YUM 的简单指令: yum info

python编写socket服务器和客户端

本次使用的主要模块是socket模块,在这个模块中可以找到socket()函数,该函数用于创建套接字对象.套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信. socket()模块函数 要创建套接字,必须使用socket.socket()函数,语法如下: socket(socket_family,socket_type,protocol=0) 其中socket_family是AF_UNIX(基于文件)或AF_INET(面向网络),socket_type是SOCK_STREAM(TCP)

蓝懿IOS网络服务器与客户端

服务器和客户端 网络架构: CS:Client  Server :优势:用户体验度高  缺点:不能跨平台 BS:Browser Server:优势:跨平台,缺点:性能依赖于网速 长连接和短连接 长连接:保证数据的实时性 TCP协议:需要建立连接 保证数据安全  属于长连接 UDP协议:可以实现1对多(广播)传输效率高(因为不用建立连接)不能保证数据准确到达 Socket:是在TCP或UDP协议上所提供的数据传输的方法集 连接:请求响应式,大部分网络请求都是短连接 TTP ip:内网(局域网之内1

10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

/**10.使用TCP协议完成一个客户端一个服务器.客户端从键盘输入读取一个字符串,发送到服务器. 服务器接收客户端发送的字符串,反转之后发回客户端.客户端接收并打印. * 客户端*/ import java.io.*; import java.net.*; public class Test10_Client { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.0.

Muduo网络库实战(二):实现服务器与客户端的连接

1. 方案的确定 1)基本需求 用户1000+, IO压力不大: 多个客户端打开网站,输入查询字符串strclient,发送给服务器=>服务器接收客户端发过来的数据并处理,将结果返回给客户端: 2)并发网络服务程序设计方案 详见:<Muduo_网络库使用手册>的1.6节-<详解Muduo多线程模型> @ muduo中TcpServer模式的选择:多线程模式 模式一:单线程,accept与TcpConnection用同一个线程做IO; 模式二:多线程,accept与EventL

SignalR实现服务器与客户端的实时通信

介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程.实时Web功能使服务端代码推送内容到链接可客服端并立即应用成为可能,而不需要服务端等待客户端去请求数据. SignalR可用于任何你想添加实时Web功能到ASP.NET应用程序的情形,聊天室是一个常用的例子,用户可以刷新Web页面来获得新的数据,或者页面使用一个长轮询来取回数据,这都是SignalR可以应用的场景.比如说仪表盘和监视系统,实时游戏等. Sig