敏感数据加密存储方案

目前的需求为防止由于不可控原因造成数据库数据泄露时,能够避免获得应用内的敏感信息。

经过调研业内目前主要有以下两种方式实现:

1. Mysql自带加密函数

使用 AES_ENCRYPTAES_DECRYPT 加密解密函数实现。其需要满足如下条件:

- 数据库系统支持

分析其优点如下:

  • 加解密有数据库提供无需代码实现

其缺点有以下几点:

  • 需要重新构造sql语句
  • 目前未找到与框架ORM结合的易用的方法

2. 在应用层实现

在应用层通过更改录入和查询的相关代码,在数据录入前加密存储,在数据读取后解密后再返回。

其优点如下:

  • 可以适用任何支持的数据库系统
  • 灵活性高可以任意变更加密算法和密钥

其缺点有:

  • 需要更新Model定义

  • 需要自己实现加密解密算法

总结

第一种方案因为使用的 sql 语句来实现,项目为防止 sql 注入类攻击大量使用了框架的ORM,目前还没有找到加密函数与ORM结合使用的好方法,需要改大量代码。目前可比较可控灵活操作的是第二种方案,通过更新 Model 定义完成数据存取时自动的加密和解密。

你可能感兴趣的:(敏感数据加密存储方案)