很多产品都会用到「实名认证」,比如售票软件、银行卡、交易软件等。如此常见的功能,当然也是产品人应该了解的。当然,鉴于产品人无需过多涉及技术知识,我们就谈谈产品人应该了解的「实名认证」知识。
1.实名认证的方式
在互联网产品中,「实名认证」的方式大致有3种:
1)姓名+身份证号码匹配认证。产品举例:火币网、金斧子网站;
2)身份证正反面照片+人脸照片认证。产品举例:火币网、云币网;
3)身份证正反面照片+人脸识别。产品举例:阿里小号。
要采取哪种方式,要视产品目标与用户需求而定。目前来看,方式3应用较少,可能这有一定的技术难度,所以一般公司并不会采用。而方式1与方式2的使用都比较多,其中方式2更为可靠,方式1更为简单。
以上3种方式,都谈不上绝对可靠,但可靠性在逐渐升高,能过滤掉的作弊用户也在增多。当然,技术难度与维护成本也在升高。
所以,有些网站对不同级别用户使用不同的认证方式:对低级别用户,使用方式1;对中等级别用户,使用方式2;对高级用户,使用支付宝的芝麻认证。
我亲身参与过的,是方式1,下面就详细聊聊方式1。
2.姓名+身份证号码匹配认证
乍一看,这种认证似乎很简单——不就是验证一下是否匹配吗?但细分之后,就有很多值得玩味的细节。比如:如何验证身份证号码与姓名是否匹配?验证过程速度如何?验证的成本如何?
1)认证成本与时间
姓名+身份证号码是否匹配,根据官方系统提供的数据进行。这就带来了两个关键问题:
a.成本较高——一次认证1元以上(具体多少就不说了);
b.认证时间可能较长——有时可能需要十几秒才能返回认证结果。
解决方案:尽量将错误认证阻挡在产品中,而不是让其进入官网系统,从而节省成本,节省用户验证时间,提升用户体验。
因此,应该在姓名、身份证号的格式验证上下更多工夫。
a.姓名格式验证:国人的姓名,大都为2~4位中文字符,所以验证时应验证其是否为中文、位数是否大于2位小于4位?当然,上限可以适当提高,毕竟有些人姓名真还挺长,据说最长的有15位。。。
b.身份证号码格式验证:详见下文。
2)身份证号码位数
我国有过两代身份证号码:
一代为15位身份证号码,当时的国家标准为GB11643-1989《社会保障号码》。你看,原来都不叫身份证号码;
另一代为18位身份证号码,其国家标准为GB11643-1999《公民身份号码》,这就是我们现在广为使用的身份证号码。《国务院关于实行公民身份号码制度的决定》提到:
国务院决定,自1999年10月1日起在全国建立和实行公民身份号码制度。
从1999年后,就开始逐步推行第二代身份证号码,那么,现在还有人在用第一代的15位身份证号码吗?我猜是有的,虽然没找到具体数据,但在全国公民身份证号码查询服务中心看到了下图这个查询功能:
既然存在两代身份证号码?那就给我们带来一个问题:是否需要对两种身份证号码都进行验证?
解决方案:根据不同用户,确定验证的身份证号码位数。对于多数用户,只需验证18位身份证号码。
为什么?因为有足够理由相信如今使用15位身份证号码的人已经很少,尽管没找到具体数据。理由吧,有这么几点:
a.自1999年开始就在推行18位身份证号码,至今已过去近18年。而身份证都有有效期,相信很多身份证号码都在这个过程中从15位升为了18位。而且,我们往往在十几岁才开始办身份证,以16岁为起点,第一代办理18位号码身份证的人,现在已经34岁。
为什么以16岁为起点?因为《中华人民共和国公安部令第43号》提到:
第六条年满16周岁的中国公民,应当向常住户口所在地的户口登记机关履行申领居民身份证的手续。公民年满16周岁时,在从生日起计算的30天内申领居民身份证。
b.二代身份证的推行,让多数人已经用上了18位身份证号码。比如12306网站的这样一条声明,就能说明目前使用二代身份证的人已占绝大多数。
c.而且,就互联网用户来说,那就更少,因为互联网用户更为年轻,对新事物也更容易接受。
3)身份证号码规则
a.表示形式:如下图,下图来自GB11643-1999《公民身份号码》。
b.校验码:如下图,下图来自GB11643-1999《公民身份号码》。
PS:下图只提供了部分校验码的规则,其他位置的号码规则不再提供,具体可以参见GB11643-1999《公民身份号码》。
解决方案:按照身份证号码的规则完成验证,确定用户输入的身份证号码格式是否正确。这和产品人关系不大,主要靠咱们无敌的开发哥哥。有兴趣的,给你段代码看看(其实代码不是太难懂)。
其实,通过这一步,不仅保证了身份证号码格式的正确性,也基本同时保证了其内容的正确性,因为身份证号的格式与内容相关性很强,校验位正是通过前面各个位置号码的内容来确定的。
综上,通过产品自身检验用户姓名、身份证号格式的正确性,验证成功后,再调用官方系统的数据,就能很好地降低成本、减少验证时间。