如何处理与存储用户身份证号及手机号等敏感信息?

想问问大家,如何对手机号这种字段进行加密存储呢?直接存明文,有时候会收到客户的投诉,怀疑是我们泄露了他们的手机号信息。那么该如何处理,才能保证不是我们泄露的呢,或者说就算泄露也能找到记录。

Promise
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 22

谁投诉谁举证 但现在工信部也是要求手机号等用户个人信息必须加密存储的 可以写个trait处理在入库的时候加密 查询的时候解密

6个月前 评论
Promisehp (楼主) 6个月前
kolin (作者) 6个月前
Promisehp (楼主) 6个月前
yangweijie

数据库字段加密 https://learnku.com/laravel/t/71384。 该扩展有版本限制,只支持php8 php7的得自己写兼容库 加密方式用 fips 不然空字段会报错。只支持加密后字段精确查询不支持模糊。

6个月前 评论
Promisehp (楼主) 6个月前

那模糊查询怎么办,就是比如有些地方需要验证手机号后4位,单独在存手机号后4位解决吗?加密了,也要解密。只是暴露数据库的危险性更小了。再说要举证的嘛,工信部(其实很难查得到,除非有sql注入漏洞)查到了在改呗。

6个月前 评论
Ailon 6个月前
ononl (作者) 6个月前
Ailon 6个月前
ononl (作者) 6个月前
ononl (作者) 6个月前
Ailon 6个月前
deatil 6个月前

hashids,把手机号拆分成 xxx - xxxx - xxxx, 然后用hashids进行加密

6个月前 评论
Ailon 6个月前
lizzj (作者) 6个月前
Ailon 6个月前
lizzj (作者) 6个月前

model中对响应字段保存做个预处理呗。 laravel 自带的对称加密方法: use Illuminate\Support\Facades\Crypt;

$encryptedData = Crypt::encryptString('Sensitive data');

$decryptedData = Crypt::decryptString($encryptedData);

6个月前 评论
Promisehp (楼主) 6个月前
sanders

我将问题分解为存储和使用

存储

进行固定密码和向量的对称加密,这样做的目的:

  1. 信息可通过密码还原
  2. 信息可精确匹配
  3. 密码保存得当的情况下,信息泄露的风险被大幅降低
  4. 按需求存储脱敏后的非遮掩部分信息

使用

检索场景支持原文精确匹配,通过相同的加密方式将原文加密后进行匹配,或通过非遮掩部分进行匹配。

第三方使用场景兑换为虚拟号码后进行输出,如:虚拟手机号(由其他运营商提供,这里需要使用原文)。

6个月前 评论

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