敏感数据加密存储方案

目前的需求为防止因为不可控缘由形成数据库数据泄露时,可以避免得到应用内的敏感信息。算法

通过调研业内目前主要有如下两种方式实现:sql

1. Mysql自带加密函数

使用 AES_ENCRYPTAES_DECRYPT 加密解密函数实现。其须要知足以下条件:数据库

- 数据库系统支持

分析其优势以下:markdown

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

其缺点有如下几点:框架

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

2. 在应用层实现

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

其优势以下:函数

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

其缺点有:加密

  • 须要更新Model定义code

  • 须要本身实现加密解密算法

总结

第一种方案由于使用的 sql 语句来实现,项目为防止 sql 注入类***大量使用了框架的ORM,目前尚未找到加密函数与ORM结合使用的好方法,须要改大量代码。目前可比较可控灵活操做的是第二种方案,经过更新 Model 定义完成数据存取时自动的加密和解密。it

相关文章
相关标签/搜索