關於“使用者資料大裸奔”

張傳波(Fireball)發表於2013-10-16

CSDN使用者資料裸奔事件

自CSDN使用者資料被裸奔後,裸奔事件陸續有來!
俺對此表示淡定,我已經是類似事件的受害人了,那次事件後我修改了很多密碼,已經與CSDN上註冊帳號密碼不一樣了。我是CSDN的超級老使用者了,10多年前就註冊了帳號,我的密碼應該是被CSDN明碼儲存的,管它了,我已經不記得以前的那個密碼了,那個賬戶也放棄使用了。

 

PSN使用者資料裸奔事件

索尼公司的PSN(PlayStation Network) 被黑,被盜取了上千萬的使用者資料,其中包括使用者名稱、密碼和信用卡資訊!而我正是這個PSN的註冊使用者,而且登記了信用卡資訊了!!那段時間,PSN網路停止運作了1個多月,索尼花了很多功夫來重造網路的底層架構。

國內的朋友可能不太熟悉PSN,這裡要稍微簡介一下:
Wii、Xbox360、PS3是目前主要的三種家用遊戲機,對應的廠商分別是任天堂、微軟和索尼。索尼的PS3遊戲機可以通過網際網路登入這個PSN,和地球上的其他玩家一起進行線上遊戲。PSN是一個以家用遊戲為主的娛樂平臺,集合了視訊、電影、音樂、社交等功能。在國外這些家用遊戲機及遊戲就好象電視機那樣普及,但這些家用遊戲機及遊戲在國內並不流行,原因是10多年前某記者發明了“遊戲是電子海洛因”的說法,然後國家明文禁止進口家用遊戲機,至今才在上海自貿區解封,以致國內玩家沒法正常玩到這些世界一流的並且絕對是健康的遊戲!不同於PC遊戲,任天堂、微軟和索尼三大廠商是禁止遊戲開發者在他們的平臺上開發成人遊戲的,對遊戲的素質有嚴格的管制,當然各國對遊戲有不同的分級制度,類似於電影的分級制度。

 

寫爛程式碼,遲早是要還滴!

回到資料裸奔的話題,索尼的技術、資金和人才都是一流的,居然也是僅僅簡單加密了使用者的密碼而已,而信用卡等機密資訊沒有加密。連超級老大索尼都犯這樣的超級低階錯誤,更何況CSDN呢!印證了那句話:寫爛程式碼,遲早是要還滴!!問題是憑什麼讓我們這些無辜的使用者來還?



普通使用者如何自保?

網上有很多技術文章聲討明碼儲存密碼,而且還說明了僅用MD5之類的加密演算法還不夠安全。這些話題可能有點深奧,而且是出於開發人員的角度來寫的,問題是一般的市民大眾,應該如何不讓自己被裸奔呢?

以下是網上常見的推薦做法:
1.密碼足夠長,而且大小寫字母、數字、符號等混合。
2.定期修改密碼。
3.不同網站使用不同的密碼。

對於上述推薦做法,我的評價是:扯淡!
你當我是記憶神童啊,按照這樣的推薦做法,我只能經常使用“忘記密碼”功能了!
OK,記不住吧,用一張紙記下這些密碼吧,這張紙是不是要用保險櫃鎖起來?然後保險櫃又要配一個超強密碼?最後連保險櫃的密碼都不記得了,然後只能找人來炸保險櫃了。

我介紹一下或許比較實用一些的做法:

1.初步判斷一下網站是明碼儲存密碼還是加密的。
判斷的辦法不復雜,你嘗試一下忘記密碼,如果給你發來的郵件中直接告訴你密碼的,那麼這樣的網站你絕對不要放心使用,建議不要註冊這樣的網站,實在要用,這麼網站的密碼也一定不要跟其他網站相同。如果發來的郵件要你去重置密碼的,那麼該網站可能不是明碼儲存你的密碼的,當然只能是大致判斷了。
有些網站在你註冊後會自動發郵件給你,說感謝你註冊之類的廢話,然後還告訴你註冊的使用者名稱是什麼,密碼是什麼!該網站居然知道你註冊的密碼是什麼?天啊,你不要以為這個網站很體貼,專門發郵件告訴你使用者名稱和密碼,這樣的網站安全性是很低的!

2.將你經常使用的網站分成幾類,不同類的網站使用不同的密碼,這樣你只需要記憶幾組密碼。
可按這樣的標準分類:
1)與你的銀行帳號、信用卡相關的,如:淘寶、支付寶,密碼一定要足夠強,並且必須實名認證、關聯手機等。
2)你平時工作和生活經常需要用到的,如:QQ、msn。
3)平時用來娛樂悠閒,就算不用也關係不大的,如:開心網。

3.要特別小心政府網站。
最近爆出某政府網站洩漏了港澳自由行簽註申請者的申請資訊!
對於政府網站實在無語,那些人這麼多錢三公消費,但在網站上的投資超級吝嗇,據說很多網站是請在校生做的。姑且不論是誰做的網站,政府網站大多是使用者體驗極差,效能極差的!安全性嘛,也應該好不到哪去!!
不在這些網站登記個人資訊是最好的做法,問題是我們有時候需要通過這些政府網站來辦事,所以我的建議是:實在不得已才用吧,個人資訊能不填就不填,能少填就少填,因為這是看你的RP。

實在沒有什麼好的實用辦法,我也是將就地用的,希望RP越來越好吧,不會再被裸奔!

 

作為程式設計師,如何不讓客戶資料裸奔?

這個話題可能有點沉重,因為我見到過不少讓客戶資料裸奔的情況,包括我以前公司的系統也是這樣的。

以下三個自測題,供你參考:

1)你的程式連線資料庫的賬號和密碼是?這個賬號具備的許可權是?

2)你的資料庫儲存使用者密碼的方式是明碼、對稱加密還是非對稱加密?

3)客戶的機密資料,例如銀行賬號、信用卡資訊等,是不是加密儲存的?

 

很多時候我們為了貪圖方便,程式訪問資料庫的賬號和密碼都是“sa”,又加上我們寫程式碼的時候基本沒有考慮防止SQL隱碼攻擊,所以,後果你懂滴……

為了更方便使用者找回密碼,所以我們直接明碼儲存使用者的密碼了,這其實只是貪圖方便的藉口而已。使用者是有可能幾個網站用同一套密碼,只要密碼被洩露,別有用心者就可以類推其他網站的密碼。

 

我們一方面不喜歡被人家資料裸奔,而同時我們又製造資料裸奔給我們軟體的使用者,這是多麼矛盾的事情啊!

己所不欲勿施於人,多為使用者著想,特別是安全性方面不能有僥倖心理,如果目前你的程式還不是很安全,快去處理一下吧!

 

 

作者:張傳波

創新工場創業課堂講師

軟體研發管理資深顧問

CMMI首席專家

《火球——UML大戰需求分析》作者

www.umlonline.org 創始人

 

相關文章