遇到很多字段,表单需要校验,db需要加密,日志需要脱敏,感觉超级烦啊,
记录一下
数据库中,保密字段不能明文保存(终于对数据库下手了),添加_like, _hash, _encrypt等字段,去掉明文。
_hash是单方向不能解密,要解密就必须上_encrypt,但是可以做查询,hash索引(迷糊查询不要想了)
_encrypt可以采用对称,也可以采用非对称(公钥私钥)
导出的时候,也将非常麻烦,因为不同的库可能秘钥不同,导致需要先解密,再加密
我琢磨以后所有敏感字段,单独一张表保存,查询的时候,只有详细页面解密充血,前端列表页只线上脱敏数据
在打日志的时候,需要吧敏感字段改成***,一些举例如下
类型 | 说明 | 示例 | 校验 | 转换 | 脱敏 |
---|---|---|---|---|---|
cn_idcard | 身份证18位或15位,可以解析出省市县,但是区划调整的比较麻烦 | 320981*****3477 | 15或18位数字,最后一位可能X | 保留前6后3,中间的加*** | |
cn_passport | 中国护照 | ||||
cn_officer_no | 军官证或警官证件 | 省(大单位)+678位都有可能 | |||
cn_social_card | 社会保障卡号,医保号,非身份证号 | ||||
cn_residence_no | 居住证号 | ||||
cn_fullname | 中文姓名 | 去掉前后,如果2位就只保留姓,三个字保留前后,少数民族可能字很多,去掉中间三分之一 | |||
cn_mobile_phone | 手机号 | 13500008188 | 11位数字,可能前面带+86 | 手机号有的带+86,有的不带,建议统一先去掉,再校验 | 保留前3后4 |
cn_tele_phone | 座机号 | 025-843941234 | 统一加区号,去+86 | ||
cn_fax_number | 传真号 | ||||
cn_address | 中文地址 | ||||
cn_driver_license | 驾驶证 | ||||
cn_plate_number | 车牌号 | ||||
cn_engine_number | 车架号 | ||||
cn_a_stockcode | a股股票代码 | ||||
enterprise social credit | 企业统一信用证代码 | ||||
cn_bank_card | 银行卡号 | ||||
cn_address | 地址 | 如果有省市县,去掉区县后面详细地址部分 | |||
en_address英文地址 | |||||
en_fullname | 英文姓名 | ||||
电子邮件 | @之前部分若干位换一下 | ||||
ip_address | Ipv4地址 | 最后2个数字改掉 | |||
mac_address | mac地址 | ||||
imei | imei号 | ||||
idfa | 苹果用户id | ||||
normal | 其它通用 | 中间三分之一的改* |