web后端http协议使用过程中安全防范及https协议实现原理

最近部门在进行对外暴露接口http协议向https协议转换

上大学时,学习过计算机网络,包括https协议,https是在http(HyperText Transfer Protocol)协议的基础上,增加了ssl(Secure Sockets Layer)

http协议

http协议在网络上明文传输,容易被他人盗取信息,篡改信息等,在http协议上可以增加一些防护措施及实践中常用的一些技巧;

1.页面及服务端请求时添加时间戳;

   页面请求:在http get请求时添加随机数,可以是时间等信息,防止浏览器缓存造成时间不一致;

   服务端响应:服务响应时,对传递过来的时间戳进行校验,一般会有个时间限制,比如2分钟等,这种方式能够避免重放攻击,防止有恶意用户截取到相关的数据之后,去伪造请求,获取服务端有价值数据(此部分需要结合特征值一起使用);

2.服务端调用需要携带应用标识及传递的签名;

   后端服务需要知道请求服务的来源,很多服务没有标识来源,比如线上流量过大,有恶意用户去刷接口时,需要知道调用来源;

   在服务接入时,需要约定一套校验的流程,比如计算   MD5(传递参数,salt),将算法提供给接入方,服务端对传递过来的参数进行校验;

虽然以上两种方式能够减少信息被篡改的几率,不过重要的信息交互时务必使用https协议

好了,以上是http协议日常互联网应用开发时,需要注意的地方;

https协议

为什么使用https协议?

https协议能够屏蔽传递信息的细节,不对外暴露传递的参数,客户端与服务端信息加密传递;

https协议具体怎么加密呢?

我们都知道,加密的方式分为对称加密和非对称加密;

对称加密:加密和解密所使用的秘钥都是相同的;

web后端http协议使用过程中安全防范及https协议实现原理

具体应用:电报

存在问题,秘钥一旦丢失,所传递的加密内容都将被他人获取;

加密方式简单,加密解密效率较高;

非对称加密:加密和解密所使用的秘钥不同

web后端http协议使用过程中安全防范及https协议实现原理

加密更相对于对称加密更加安全,但加密解密时会耗费更大的代价;

回到https协议上来,https协议时如何去工作的呢,https使用了非对称加密的方式

web后端http协议使用过程中安全防范及https协议实现原理

具体步骤:

1.网站申请CA证书之后,将证书部署在nginx服务器,或直接部署在web应用服务器中;

2.用户请求https域名,本地没有证书的话需要去CA证书机构拿客户端证书;

3.每次请求,用户随意生成一个对称加密的秘钥,通过客户端的ca证书将秘钥加密后传递给服务端,服务端使用服务端ca证书进行解密,获得客户端传递的秘钥;

该步骤使用非对称加密传递对称加密的秘钥;

为什么这么做呢?之前已经提到了,虽然可以直接用非对称加密对所有数据传递进行加密,但是该方法效率较低,传输的数据量大时,会造成服务器计算压力;

4.客户端和服务端后边每次交互都使用客户端生成的秘钥,进行对称加密和解密;

客户端生成的秘钥是通过非对称加密传递的,中间即使有人拿到了加密串,也是无法解析;

这里的非对称加密是由算法保证了安全性,至今没有一个有效的算法能够解决大数分解质数的问题;

至此,客户端和服务端已经能愉快的使用https安全的进行数据交互了;