https://mp.weixin.qq.com/s/-Jb-_PpbEN5HYpueUqtxzA
网络传输安全主要需要保证两部分:
1.客户端上传信息即使被截获也不能被别人知道:例如:登录密码。
2.服务端下发的信息,即使被截获也不能被别人知道。例如:用户信息。
保证客户端上传信息的安全:
客户端传输重要的信息,例如银行卡号,用户名密码给服务端时。为防止信息截获后信息泄露,可以使用RSA的加密算法。RSA加密算法是一种非对称加密方式。因此我们只需要在客户端把信息用公钥加密后,传递给服务端即可。这样任何人都不会知道信息,除非它知道私钥。然而私钥都保存在服务端,比较安全。
服务端收到请求后,利用私钥对信息进行解密即可。这样就不会出现信息泄露。
保证服务端下发信息的安全:
当用户要进行登录的时候,服务端对用户名和密码进行验证成功后。会下发一个token给客户端。这个token肯定要进行加密,如果我们采用对称加密的话。那么客户端也必须知道对称秘钥才可以进行解密。那么用户怎样才能拿到对称秘钥呢?为了传输安全,我们可以用私钥对对称秘钥进行加密。客户端收到信息后,利用公钥对信息进行解密,即可拿到对称秘钥,然后利用对称秘钥可以对token进行解密。然后把token保存起来就可以使用了。每次发起请求的时候,用token进行对称加密后,再进行访问。
服务端收到信息后利用对称秘钥对信息进行比对,符合的话就就进行相应的数据返回。
//注意:
1.RSA的解密速度约等于AES解密数据的100倍,因此不是核心的信息我们采用AES加密即可。这样可以提高新能。
2.对称秘钥可以采取在客户端随机生成的方式,非对称秘钥可以采取固定的方式。
3.登录时的用户名和密码可以采取非对称秘钥进行数据库验证,这样没有安全性问题。
4.普通的验证可以采用token加时间来进行有效验证。如果时间相隔太长就让重新登陆。