互联网应用里的手机号码应该如何存储

2018-06-13 09:36:35 +08:00
 reid2017
现在几乎所有的应用或网站都使用手机号码进行注册,这些服务的后台是如何存储手机号码的,是明文的还是加密的,或者其它方式?
7983 次点击
所在节点    程序员
32 条回复
xmh51
2018-06-13 09:37:24 +08:00
明文啊 这个一般不会是密文的。
opengps
2018-06-13 09:40:28 +08:00
明文,不然怎么搜索
opengps
2018-06-13 09:42:55 +08:00
我曾经设计过一个系统:
存储当然还是明文,但是展示时候是 138****8888,然后支持精确查询来区分是不是同一个用户
目的:
用这种设计来避免号码被员工恶意拿走(页面上复制,拍照之类的),同时还实现了客服人员确认来电用户身份
reid2017
2018-06-13 09:57:20 +08:00
@xmh51
@opengps
数据库有攻破的风险,存明文的话就会泄漏用户隐私,而且明文的话,有一定权限的运维人员都能看到用户的真实手机号码了
加密的话,查询和新增都要先做加密解密,确实会比较烦琐。
opengps
2018-06-13 10:02:07 +08:00
@reid2017 这就是管理层和运营层的问题了,不要传递给后端开发层解决。
你真把他们全加密了,每次搜索全文解密?
到时候运营会过来找你:为什么效率这么低???是不是不想干了???
reid2017
2018-06-13 10:11:55 +08:00
@opengps
互联网服务绕不开的问题是用户隐私,我使用你的服务,可以给你必要的隐私信息,这些信息仅限于给这个服务提供者使用,你得帮我保管好,不能泄漏出去(滑稽脸),所以如果存明文,一旦数据库被攻破,所有隐私信息都是肉眼可见

领导说要加密存储,那你也只能在代码里做吧,现在好像还没有可以直接在数据库里实现字段加密的吧
janxin
2018-06-13 10:13:12 +08:00
你加密了怎么发短信?发短信之前先解密一下吗?
reid2017
2018-06-13 10:22:51 +08:00
@janxin 是的,类似操作都需要先解密,写入的时候则要先加密
janxin
2018-06-13 10:40:19 +08:00
@reid2017 你要是对称加密提取一下密钥跟没加密有什么区别?
chenqh
2018-06-13 10:41:35 +08:00
这话说的,互联网数据不就是用来丢的吗,那个公司没丢过
opengps
2018-06-13 10:47:27 +08:00
@reid2017 你应该考虑如何保护你数据库,而不单单是考虑软件加密角度。
保密等级高的数据库,估计仅仅内网开发,仅仅某些资深员工有权限接触
何况基于手机号,还是有很多联系的,要不你考虑下脱敏,比如最后 2 位数按照特定规则变换,同时做到好搜和脱敏,手机号单独使用某些外键关联走,这样至少脱裤可也需要花点难度构造原始数据
x86
2018-06-13 10:51:29 +08:00
那你们所有字段都加密一次好了,怕运维看到
lcy630409
2018-06-13 10:56:17 +08:00
楼上有位同学说的对,数据库里的资料运维和有数据管理权限的人肯定是可以看到的,,只有不可逆向的加密 才能不被获取到,但是手机号不被逆向了,自己的业务怎么用?
这个还是管理层的问题,需要下发文件和规划好权限问题
lcy630409
2018-06-13 10:57:20 +08:00
而且手机号这个东西太有规律性,你不可逆向加密了,只要我知道了加密方式 照样可以字典出来
opengps
2018-06-13 10:58:19 +08:00
安全是个综合体,别只考虑软件角度,正如楼上所属,能做到脱裤,怎么就不能拿走你源代码或者拿走你网站反编译源代码,最终还是不安全
你应该考虑各个层面做到自己该做的:
运维:人员可靠,系统基础漏洞封堵
开发:写代码注意别漏洞,别前台直接拼 sql 字符,一个 sql 注入拿到数据库
业务人员:别拍照或者复制页面就能拿走数据库的重要信息,别自己弱密码
管理层:别停留在表面上,做点实际的比如花钱上安全组件
yulitian888
2018-06-13 11:02:19 +08:00
SQL Server 2016 新特性了解一下?
关键词:Always Encrypted
yulitian888
2018-06-13 11:04:52 +08:00
@reid2017 “现在好像还没有可以直接在数据库里实现字段加密的吧”,答:“有的!运维看到密文,程序读写明文”
reid2017
2018-06-13 11:10:26 +08:00
@yulitian888 这么高级!可是不用 SQL Server...
3dwelcome
2018-06-13 11:11:28 +08:00
我们用的是一个自研数据库,每存一条记录,都是加密的。这样就算机房硬盘被人偷走,也不怕。

如果是常用的 mysql,最好把全文索引作为一个单独模块提取出来。这样存密文,就更不怕脱裤了。
reid2017
2018-06-13 11:38:21 +08:00
@lcy630409
其实没什么办法可以完全阻挡一个认真的黑客!或许加密,只是为了增加对方破解成本而已,不会像明文那样肉眼所见即所得。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/462664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX