用户信息的脱敏处理不当

随着安全意识的提高,各大网站都采用了脱敏方法防止用户信息泄露,那么在用户信息脱敏上都是如何处理的。

今天研究了一个比较大的站点,但是不怎么知名,官方宣称有6000w+注册用户,这个量已经够大了,那么在我测试中发现一些用户信息的处理不当。

在一些知名网站中对用户手机号,证件号的脱敏都是采用手机号显示前3位加后两位,证件号显示前2-6位加后2-4位。这种脱敏是很安全的,又有利于用户在找回密码流程中的识别。

那么在今天测试站点中,我发现该网站采用了证件号显示前8位加后两位。

 

 

初看是没有问题的,这里先忽略手机号和QQ号的问题,单看证件号,此处证件号脱敏是达到了防泄露的,但是有个问题,这里返回了用户的生日,由此构成了8+8-2(重复位)+2=16位的证件号。此时只有两位证件号为未知数,那么就是有100个证件号是可用的。想要知道真正的证件号还是有难度的,下面我们利用公开资料对该数据进行处理。

我国证件号规则:

身份证号码规则:
前1、2位数字表示:所在省份的代码; 第3、4位数字表示:所在城市的代码; 第5、6位数字表示:所在区县的代码; 第7-14位数字表示:出生年、月、日; 第15、16位数字表示:所在地的派出所的代码; 第17位数字表示性别:奇数表示男性,偶数表示女性; 第18位数字是校检码。

我们知道了15、16位的含义:当地派出所的代码,这个我们拿不到,但是有一点,第18位校验码,校验码是根据算法计算的。校验码算法标准为:ISO 7064:1983.MOD 11-2

我们可以利用校验码进一步缩小正确证件号的范围,那么校验码的算法可以简单描述为:证件号前17位数字分别与加权因子相乘然后求和再取11的余数。

加权因子:7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 余数:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 校验码:"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" 此处校验码与余数一一对应

有了理论基础就可以进行实践验证了。

该程序很简单,源码就不发了,原理已经说的很清楚了

实践是检验真理的唯一标准,由实验得出我们的理论初步得到了验证,即利用校验码大缩小了寻找范围。

对于最后这9组数据的验证方法此处不再赘述,会的自然知道怎么搞。

此处的姓名也很好获取,real_name打码了姓,但是nickname并没有,这里可以看出默认的昵称就是真实姓名。

以人为鉴,可以明得失,在我们对敏感信息进行脱敏切不可马虎,应采取尽量多隐藏信息,同时规避低级错误,比如这里的生日,变相暴露了8位号码。

共有 0 条评论

Top