如何处理与存储用户身份证号及手机号等敏感信息?
想问问大家,如何对手机号这种字段进行加密存储呢?直接存明文,有时候会收到客户的投诉,怀疑是我们泄露了他们的手机号信息。那么该如何处理,才能保证不是我们泄露的呢,或者说就算泄露也能找到记录。
谁投诉谁举证 但现在工信部也是要求手机号等用户个人信息必须加密存储的 可以写个trait处理在入库的时候加密 查询的时候解密
数据库字段加密 https://learnku.com/laravel/t/71384。 该扩展有版本限制,只支持php8 php7的得自己写兼容库 加密方式用 fips 不然空字段会报错。只支持加密后字段精确查询不支持模糊。
那模糊查询怎么办,就是比如有些地方需要验证手机号后4位,单独在存手机号后4位解决吗?加密了,也要解密。只是暴露数据库的危险性更小了。再说要举证的嘛,工信部(其实很难查得到,除非有sql注入漏洞)查到了在改呗。
hashids,把手机号拆分成 xxx - xxxx - xxxx, 然后用hashids进行加密
model中对响应字段保存做个预处理呗。 laravel 自带的对称加密方法: use Illuminate\Support\Facades\Crypt;
$encryptedData = Crypt::encryptString('Sensitive data');
$decryptedData = Crypt::decryptString($encryptedData);
我将问题分解为存储和使用
存储
进行固定密码和向量的对称加密,这样做的目的:
使用
检索场景支持原文精确匹配,通过相同的加密方式将原文加密后进行匹配,或通过非遮掩部分进行匹配。
第三方使用场景兑换为虚拟号码后进行输出,如:虚拟手机号(由其他运营商提供,这里需要使用原文)。