密码泄露,谁之过?

密码泄露,谁之过?

前一段时间,@virushuoTwitter上提醒大家注意保护自己的Twitter密码,主要是说不要使用你不能确信其安全的第三方客户端(例如dabr,rabr等等),并且指明极有可能存在这样的人,即利用为大众提供第三方客户端来收集别人的Twitter账号及密码。一时间,@virushuo收到了多方责难,建立第三方客户端的人骂他胡说八道,妖言惑众。让我无法理解的是许多普通推友表示出对这种担忧的不屑一顾,大有“本来很方便的事,你非得搞复杂了”的论调。

无论是当时还是现在,我都非常支持@virushuo的提醒行为。网络是不安全的(这一点稍有知识的人都会明白),而由于某些众所周知的原因,人们需要一些特殊步骤才能上Twitter,而第三方应用借由官方提供的API使得人们可以更轻松地能够访问Twitter。

但是很显然,在这里,你的密码是不安全的。下面举一个最简单的案例:

当你使用第三方客户端时,你与最终目的地之间建立了如下路径:

User——>3rd Client——>API——>Twitter

登录时,你通常可以选择两种方式,分别是直接填写用户名和密码,或者选择OAUTH方式。

这两种方式的区别主要在于:

直接填写:方便,无需特殊步骤。

OAUTH:安全,因为验证是在Twitter官网完成的,但也因此,需要特殊步骤。

绝大多数人会选择第一种,否则很多第三方客户端便失去了它的意义。

正常的步骤下,你的用户名和密码会由客户端经由API提交给Twitter验证,并返回结果。

看起来很正常,客户端只是帮你提交了你的登录请求而已。

但是,假设我们在客户端的源代码中加几行代码,作用是在提交给Twitter验证前,把用户所填写的账号和密码记录到服务器上的某个文件里或者发到某个指定的E-mail邮箱中(相信我,完成这一步实在是太简单了,因为你的信息都是以明文方式被提交的!)

你的信息就这么神不知鬼不觉地被记录下来了,而且你依旧可以正常登录,看起来就像什么事都没发生一样!

这和前几年很流行的(我不是很清楚现在是不是还流行)键盘记录器很相似,看起来,你很正常地使用你的键盘,登录你的E-mail、QQ,其实在操作系统后台有一个进程,把你所有的键盘输入记录(也就是你打过哪些字符)都记录了下来,很多黑客盗QQ号就是用的这种手法。

好了,随便加了几行代码,然后“义务”提供给需要的人,几百个人纷涌而至,还在这里感谢提供的人,其实呢,早就把你们的密码都记下来了。

安全吗?安全吗?!

并且我预测,之后一定会发生这样的密码泄露事件。果不其然,今天就有许许多多的推友收到了官方的密码重置信件,这下人们才开始意识到自己可能真的中招了。

于是形势大转,那些提供免费客户端的人被骂得狗血淋头,而不管他们究竟有没有又有多少干了这事。

我要再次引用鲁迅的那句话:可怜之人必有可恨之处!

既然选择了使用无法确信的客户端,你就得承担这种选择带来的风险。好比你贪便宜住进一家黑店,结果给劫了,你怪谁?怪谁?

@kcome:关于安全,我老早就说,看好自己的东西,上好锁,是对自己更是对别人负责,丢了东西不要怀疑这个怀疑那个,自己责任最大,早干吗去了。等到所有人都有嫌疑时,自己才是最应该反省的。此时洁癖成了马后炮么?

最重要的是,别人已经提醒过你了,你自己执迷不悟,出了事就在那叫唤自己有多惨。何其可怜,何其可恨。

网络是不安全的,只要是以HTTP协议传输的数据,都能很容易地被截获,这也是为什么像银行、支付宝以及其它一些重要的安全网站都采用了HTTPS安全协议传输数据。知道Gmail现在为什么默认采用了强制HTTPS传输吗?就是为了安全,为了保护用户的资料和隐私。另一方面,就算是自建的客户端,也有可能被不可靠的主机托管商暗算。就算是用了某些加密通道,也有可能被加密通道本身的提供者截获。

所谓的钓鱼也就是如此了,借用@yegle的话来说,“密码是用户自己交出去的”,别人谁都没义务负责。他甚至表示,“我的API已经收集了500多用户的密码你信不?用第三方就是‘责任自负’,当初用的高兴的时候为啥没想到这是钓鱼的?”,还是那句话,责任自负,不懂得负责的人说明你还是个只会哭闹的小孩子

安全的方式是什么?

@virushuo:

1、你的空间要安全,要知道空间提供商的背景,机房所在地的法律和情况。

2、你的程序来源要可靠,程序之中不能有后门。

3、应该强制使用https连接,不要使用http。

这3条有任何一条做不到,那么尽量不要用。

以上。EOF。


发表评论

电子邮件地址不会被公开。 必填项已用*标注