关于传输数据的加密与验证

前言:

数据加密:在前后端的数据传输过程中,如果涉及到的数据是比较秘密的,那么就需要对数据进行加密和验证;曾经有大佬说过,目前为止,现在还没有绝对安全的加密(除了量子加密…不过技术还不成熟),只能通过提高别人解密的成本来实现相对安全的加密

数据验证:主要是用于权限管理要求比较高的web应用,防止劫持者对请求数据进行篡改,从而达到越权目的;数据验证保证了数据的完整性和一致性

为什么要数据加密传输

在数据传输过程当中如果涉及到密码等很重要的隐私数据,需要对该数据进行加密传输,不应该进行明文传输;因为在传输过程当中,你的数据可能会被劫持,如果是明文传输的密码等隐私数据,劫持者就知道你的密码了。而大部分用户的很多账号都是使用相同的密码,这样就会非常危险

数据加密是需要前后端进行配合,约定相关条件,前后端才能正确的对数据进行加解密。所以这个约定条件就比较重要,前端不能轻易暴露。

但是前端由于不是编译运行的,代码存在被破解的风险;所以需要增加加密流程的复杂度,不要让解密的人轻易的识别你的加密流程,这样就提高了破解者解密的成本。

如何提高解密成本

通过多次的混淆加密加上与后台配合通过设定数据的时效性来提高解密的成本。

多次混淆加密就是对数据的密文进行加密,增添多个混淆参数,执行多次加密。在前端加密中需要把混淆参数隐藏好;

设定数据的时效性可以压缩破解者的破解时间,增加破解难度;该方法在传输的数据中添加一个时间戳,后台在获取数据时,首先判断时间是否合法;该方法的坑在于,不同客户端的时间戳是不一样的,所以服务端不能很好的设定时效长度;

如何进行数据验证

正如前言所说:‘数据验证保证了数据的完整性和一致性’,那么我们该如何进行数据验证。下面只是我的想法:

1.首先对传输的数据转换成字符串(因为对象不能进行加密处理),然后把字符串格式的数据进行加密

2.将加密字符串格式的数据的r_key和r_iv用前后台约定的key和iv进行加密,并把刚刚进行加密的两个数据添加到传送的数据当中

3.后台首先根据约定的key和iv进行解密,得到本次传输的r_key和r_iv,然后将得到的数据明文进行同样的方式加密

4.最后比较前后台对数据进行加密的密文是否相等,从而判断该数据是否是完整的和一致的

总结

其实前端是不存在安全的加密的,加密主要是在后台中进行应用;该文章只是梳理一下前后台进行加密传输的思路,以便以后进行参考

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724A1609600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券