CSDN 泄露用户密码给我们什么启示

2011-12-30 11:42

 

近日,网络、电视上大家谈论的都是 “CSDN 泄露用户密码” 事情。我们除了说句“不像话、不应该”之外,还能得到什么启示呢?

 

首先,我觉得存在管理问题。这次是泄露密码,之前移动、联通泄露用户的手机号码,再之前的网络上把与用户电子邮件大批量贩卖。为什么没有公司从制度上进行规范管理?没有听说 CSDN 抱怨员工不遵守保密协议,让员工签个保密协议很难么?给员工培训一点职业操守知识很难么?只能说,我们的多数公司里,领导们忙着赚钱、与人斗争其乐无穷、与上层社交,没有时间去管理公司。

签署保密协议也许不能彻底解决问题,但并不意味着不值得做。正如,交通部每年都在调整规定、公路上提示标志,我们不能说“你不能彻底解决问题,所以什么都不要做”。从管理上讲,解决了一部分问题,就是成功。

 

其次,从技术上讲,可以把数据库的备份、批量导出(dump) 功能封锁起来,只开放少数几个信得过的人。做起来很容易,为什么都不做呢?很多技术头头不懂技术,只会吹些概念。说句不客气的话,很多技术头头缺乏思考问题的能力,也不屑于去思考。正如同 EJB 刚开始推行的时候,很多人盲目跟风,连我说句”EJB 开发起来这么费劲,不好用”都会被潮水般的口水淹倒。

 

第三,系统架构师缺乏最基本的技术上的常识:密码不能明文保存、密码不能用可逆加密算法。

正如很多国内的网站,会有“找回密码”这个功能。我就纳闷了,Windows/Linux 操作系统、Oracle 数据库,忘记了密码,是没有“找回密码”这个功能,只能由管理员改成一个新密码。这是一个最最基本的常识,为什么会有人在自己开发的系统中,提供“找回密码”这个古怪的功能呢?除了用”明文保存密码“之外,CSDN 在用户管理模块犯的错误不少:

a. 不能更改用户名,而Windows/Linux 操作系统是可以更改用户名的。其实要允许更改用户名,也很容易,数据库设计时,用逻辑主键(自增长或uuid)、不用业务主键(用户名)就可以。

国内太多系统都有这个问题。为什么那么多程序员写了 n 年的程序,都抄袭不了”Windows/Linux 操作系统是可以更改用户名”这个功能?我们不是“山寨/抄袭/模仿”大国么?怎么这点小东西都模仿不了?

公安局都不限制我改名字,网站IT系统凭什么不让我改名字?让用户能够改名字,是很难做到、还是他们觉得用户改了名字然后网站就少了几块肉?限制用户改名字,这难道是用户需求?

b. 用户名不区分大小写。任何系统,允许这样两个用户名同时存在都是奇怪的:jack/Jack。Windows 是用户登录时是不区分用户名大小写的,Oracle 数据库也是,我们的系统呢?

c. 加密密码应用不可逆加密算法。见过太多用可逆加密算法来加密密码的,包括很多大大的软件公司。

IT系统保存密码的主要用途在于,验证用户的身份。不可逆加密算法,可以完成这个任务。明文保存密码、用可逆加密算法保存密码,都存在泄漏密码的风险。而用不可逆加密算法,不存在泄漏密码的可能,因为我们根本就没有保存密码,我们内部的IT人员,都无法破解用户密码(这点很多IT公司做不到)。

 

第四,CSDN 不道歉、不赔偿的态度,也在公关上失了分。哪怕 CSDN 说是极个别离职员工干的、哪怕现任产品总监范凯说这是前任没有做好,从广大用户来看,你们是一个集体,名字叫 “CSDN 网站”。举个例子来说,如果我们买了个手机,用不了,手机厂商发表申明,说”这是某个前员工在里面撒了泡尿,我们不道歉不赔偿“,是不是会闹大?哪怕给每个用户送一点网站积分作为补偿,也是一种态度。事情还在讨论进行中,电视台还在播放新闻,CSDN 居然把相关解释从首页删除,这种做法,也是很不可思议的。

 

第五,范凯说数据库从Windows Server上的SQL Server迁移到了Linux平台的MySQL数据库,解决了CSDN帐号的各种安全性问题。CSDN 似乎没有发生过因为用了 SQL Server 导致出现安全性问题 x 次。这个说法也显得不知所云、没有针对性。

 

第六,自行开发软件不如找专业软件公司开发。

理由很简单,如果找软件公司A,效果不好,我们可以换成软件公司B;B公司不行我们可以换C。换来换去,总不会所有的公司都不靠谱吧?如果自己养的程序员,开发不好,怎么办?全部开除?有点难度。重新招人?正如范凯所说”组建了新的研发团队“,新团队能力、做事态度未经验证。老的程序员怎么办?闲养着?不是办法。新招聘进来的技术人员,如果再不行,怎么办?

开发软件如同写作文,看上去难度不大,基本语法初中都已经学完了,但不等于随便看到一个写得不好的文章,我们都可以自告奋勇说,“我可以比你写得好”。

写软件也是如此。你能看出别人的软件问题,并不等于你能写出比他更好的软件。很多公司经理都不明白这个道理。

 

第七,其实还有个问题,这次爆露得不明显。那就是:不懂技术的老板,招聘技术总监,很多时候是会看走眼的;技术总监长期不干编程工作,招聘程序员,很多时候也是会看走眼的。

 

第八,我们的系统架构师,总是自视甚高,觉得比任何人都强,其实不然。CSDN 自开发论坛,自然是觉得,可以比那些开源论坛、商业论坛软件,开发得更好。

结果如何?亮点在哪里?我真不明白,就弄个论坛,用 phpbb 不就行了么?折腾来折腾去,劳神伤财不讨好。

 

更改记录:

第三条、第八条的主语,从"程序员"换成"系统架构师"。原因在于:这些事情,不是程序员能够决定的。所以,责任人应该是"系统架构师"。

 

 

欢迎转载,转载请注明出处: https://www.zheguisoft.com/staff_blogs/jacklondon_chen/2011, 及 https://www.cnblogs.com/jacklondon/archive/2011/12/30/2307251.html