http协议传输数据时如何防止泄密和攻击
我们都知道http协议是一个非常重要的应用协议,我们日常所看的网站都使用了该协议,但是它是明文传输数据的,很容易被黑客监听,获取到数据并且实施攻击,对我们的网站造成严重的损失。为此,我们可以使用https协议来加强系统安全,但是使用https需要申请证书,证书是收费的,也有免费的,但是有时间限制,所以我们可以在不使用https协议的情况下采取一些技术措施,以达到与https相同的安全性。
主要方法有:
1、传输数据使用md5或sha1,甚至更强的摘要算法进行签名,就像微信支付那样做签名验证,服务端会以同样的算法计算签名验证,如果签名相同则表明数据传输没有被篡改,如果不同则数据被篡改,有效的防止了数据传输过程中被篡改。
2、传输数据加入时间戳来防止大于指定时间(比如60秒)的重放攻击,在服务端会做验证,携带相同时间戳的请求在超过60秒后重复请求则认为是重放攻击。
3、传输数据中加入随机字符串,防止小于指定时间(比如60秒)的重放攻击,服务端会做验证,携带相同随机字符串的请求在60秒内重复请求则认为是重放攻击。
4、将token和随机字符串保存在服务端,以便验证和撤销token,当发现token被盗时,用户可以强制登录一次,被盗的token将自动失效。
5、根据https原理实现http协议中的安全通信,客户端使用随机生成的AES密钥来加密请求数据,再用约定好的服务端RSA公钥加密AES公钥一同传输,服务端使用自己的私钥解密客户端请求,取得客户端随机AES密钥,再用此密钥解密发来的原始数据,业务处理后,再用此密钥加密后传输给客户端。
以上5个步骤,可以起到防止数据被篡改,防止重放攻击,身份认证,加密的数据通信,这样可以在不使用https协议的情况下,确保通信安全。