敏感數據加密存儲方案

目前的需求爲防止因爲不可控緣由形成數據庫數據泄露時,可以避免得到應用內的敏感信息。算法

通過調研業內目前主要有如下兩種方式實現:sql

1. Mysql自帶加密函數

使用 AES_ENCRYPTAES_DECRYPT 加密解密函數實現。其須要知足以下條件:數據庫

- 數據庫系統支持

分析其優勢以下:markdown

  • 加解密有數據庫提供無需代碼實現

其缺點有如下幾點:框架

  • 須要從新構造sql語句
  • 目前未找到與框架ORM結合的易用的方法

2. 在應用層實現

在應用層經過更改錄入和查詢的相關代碼,在數據錄入前加密存儲,在數據讀取後解密後再返回。ide

其優勢以下:函數

  • 能夠適用任何支持的數據庫系統
  • 靈活性高能夠任意變動加密算法和密鑰

其缺點有:加密

  • 須要更新Model定義code

  • 須要本身實現加密解密算法

總結

第一種方案由於使用的 sql 語句來實現,項目爲防止 sql 注入類***大量使用了框架的ORM,目前尚未找到加密函數與ORM結合使用的好方法,須要改大量代碼。目前可比較可控靈活操做的是第二種方案,經過更新 Model 定義完成數據存取時自動的加密和解密。it

相關文章
相關標籤/搜索