天天看點

高效能程式員的修煉劄記:安全基礎,保護使用者資料

前言:現如今,各種網站使用者安全問題不斷爆發,很多使用者的密碼被網站曝光出來,安全是網際網路的一個老生常談的話題,為什麼使用者的密碼這麼容易被破解呢,首先,作為我們開發者來說,我們要想盡辦法提高使用者資料的安全性,同時保證使用者體驗效果。

所有網絡通信都應該加密嗎

很顯然随着網際網路的高速發展,在作者的眼裡,https已經提高了很大的性能,實作ssl的通信已經變得不再讓人那麼沮喪,那麼我們一般的網站可以嘗試去使用https通信,不過https需要有ca的認證證書,需要花費一定的金錢,而如果不是CFCA簽發的證書,浏覽器在通路的時候會提醒你,證書不安全。

https不再是奢侈品(CPU的運算能力得到了提高,我們都知道,使用https通信需要使用到加密算法,而加密算法一般都比較耗時,然而伴随着摩爾定理,計算機處理能力在發展,那麼使用https通信将不會降低使用者的體驗能力)

https意味着沒人能在網際網路監視你(我略微了解一些http和https的差別,就是https底層是通過ssl對用戶端到服務端傳遞的資料進行加密處理,這樣就保證你的資料在網絡傳輸過程中不再透明)

https現在變得更快了(雖然https在這座看來還有很多亟待解決的問題,但是的确實作https通信已經變得非常可行,我最近在實作期貨交易平台和華夏銀行的對接,使用的https通信方式也讓我獲得不少在https通信上的經驗)

防範字典式攻擊

随着伺服器能力的處理,相對于那些需要在網絡上探索别人使用者資訊的網站來,其能力也得到了提高。如果你的密碼長度是單純的字母或者數字,并且長度有限,那麼被破解已經變得輕而易舉。

限制每個使用者的登入次數是安全領域的101.

也許你可能不了解101,但是這句話的意思就是說,對于網站設計者來說,限制使用者的登陸次數是行之有效的解決辦法。我們的web管理背景就會限制使用者的登陸次數,如果連續登陸五次都失敗了,就會鎖定使用者,可以通過管理者解鎖,也可能等到你下次登陸成功時解鎖,并且會限定你在被鎖定後多長時間内不得再次嘗試。

以上的方法暫時是不賴的,但是作者還提出來一種新穎的辦法,就是

第一次失敗

沒有延遲

第二次失敗

延遲2s

第三次失敗

延遲4s

第四次失敗

延遲8s

我覺得這種方法更加人性化,給一些“真正”的使用者去想起他們正确密碼的機會,但同時降低暴力破解。

快速哈希

看了本章我才明白,原來MD5的雜湊演算法已經這麼落伍了,竟然很不安全了;另外密碼如果隻是單純的數字或者字母的話,如果長度還不夠的話,簡直就等于沒設定。

那麼作為網站的設計者以及網絡的使用者來說,我需要:

密碼長度超過12位,并且包含大小寫字母、數字、特殊符号

使用PBKDF2或者bcrypt。

關于網絡密碼的可怕真相

作為一個程式設計人員,我以前也經常會為每個網站儲存一個密碼,由于密碼衆多,我需要在電腦上儲存一個使用者名和密碼,以及對應的網站,但是後來我抛棄了這些使用者名和密碼,因為他們用起來太過糟糕,我經常記不起來之前的密碼。網際網路的發展幫助我解決了這個問題,現如今,一些網站會讓你通過QQ、新浪進行登入,而不再是它原始的使用者名和密碼,這讓我感到有些許安全感,畢竟新浪和QQ的安全設施應該會更好一點。

是以你也要學會保護你的使用者名和密碼,盡量使用知名企業的使用者名和密碼去登入别的網站。

另外作為開發者,我在以後也要去提供這種機能。

繼續閱讀