关于接口AES加密的问题

之前总是听说数据加密,我有点不理解,我理解的方式有2种

  1. 保存数据库前加密,取出后解密,接口是明文传输,这种模式我理解的是数据库就是泄露也不会看到明文数据
  2. 后端保存的时候加密,接口返回密文,然后前端保存密钥,前端解密数据。这种方式有个疑问,如果是h5端,密钥不是很容易暴漏出去吗,这样还有什么意义?还有现在基本都是HTTPS协议,这种模式更没有意义了吧?好像大多数所谓的接口加密都是这样的模式
让PHP再次伟大
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Oraoto
最佳答案
  1. 不过度依赖 HTTPS/TLS 的安全性, 协议或者某个具体实现可能有未发现漏洞,所以需要多一层保护
  2. 不过度依赖 CA 体系,客户端加个 CA 就能被中间人抓包,非常不安全,所以需要多一层保护
  3. 防止中间服务器获取、记录敏感信息,例如你用了 Nginx 做反向代理(或者云厂商负载均衡服务),他们都是可以记录请求信息的,所以需要多一层保护
  4. 加大攻击成本,对于恶意攻击者可能很简单(不就是 JS 源码里找下密钥?),但是可以吓退一些脚本小子、小白

当然,直接在 JS 里写 AES 密钥也太简单了,复杂的可能用 RSA(例如 Steam 每小时都会替换 RSA 公钥给前端加密用户密码)甚至自己实现一套密钥交换。

不过我是没遇到需要这么高安全性的场景,一般业务通常能用好 HTTPS 就很好了,没必要为了提高一丁点的攻击成本而引入无谓的复杂性。

3年前 评论
讨论数量: 4

前端js加密肯定是有被泄漏的风险,前端打包之后密钥被混淆在js文件中,如果加密方法比较复杂的话。破解的成本相对较高。

3年前 评论
勇敢的心 (楼主) 3年前
LiamHao 3年前
勇敢的心 (楼主) 3年前

phpseclib.com/ 这个可以看一下,我也是前几天被人安利的。

3年前 评论

接口签名就好了吧。。。数据加密,可是cpu密集型的任务了

3年前 评论
Oraoto
  1. 不过度依赖 HTTPS/TLS 的安全性, 协议或者某个具体实现可能有未发现漏洞,所以需要多一层保护
  2. 不过度依赖 CA 体系,客户端加个 CA 就能被中间人抓包,非常不安全,所以需要多一层保护
  3. 防止中间服务器获取、记录敏感信息,例如你用了 Nginx 做反向代理(或者云厂商负载均衡服务),他们都是可以记录请求信息的,所以需要多一层保护
  4. 加大攻击成本,对于恶意攻击者可能很简单(不就是 JS 源码里找下密钥?),但是可以吓退一些脚本小子、小白

当然,直接在 JS 里写 AES 密钥也太简单了,复杂的可能用 RSA(例如 Steam 每小时都会替换 RSA 公钥给前端加密用户密码)甚至自己实现一套密钥交换。

不过我是没遇到需要这么高安全性的场景,一般业务通常能用好 HTTPS 就很好了,没必要为了提高一丁点的攻击成本而引入无谓的复杂性。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!