鑑於MSDN明文密碼問題的曝光,各個網站都在爲自己忽視網絡安全在進行反思,也有部分無恥網站開始利用這個名單在增加自己的註冊用戶,真是機遇與風險並存。對了我們來說,用戶也會根據這個事件提高對各個軟件系統的安全要求,以後做軟件系統安全性也是一個需要考慮的範疇,值得大家借鑑。 原文地址:http://coolshell.cn/articles/5353.html 正文: Web上的用戶登錄功能應該是最基本的功能了,可是在我看過一些站點的用戶登錄功能後,我覺得很有必要寫一篇文章教大家怎麼來做用戶登錄功能。下面的文章告訴大家這個功能可能並沒有你所想像的那麼簡單,這是一個關係到用戶安全的功能,希望大家能從下面的文章中能知道什麼樣的方法纔是一個好的用戶登錄功能。以下內容,轉載時請保持原文一致,並請註明作者和出處。 用戶名和口令首先,我們先來說說用戶名和口令的事。這並不是本站第一次談論這個事了。如何管理自己的口令讓你知道怎麼管理自己的口令,破解你的口令讓你知道在現代這樣速度的計算速度下,用窮舉法破解你的口令可能會是一件很輕鬆的事。在這裏我想告訴從開發者的角度上來做設計這個用戶名和口令的事。下面一幾件規則:
所以,我們每個頁面都需要對用戶的身份進行認證。當然,我們不可能讓用戶在每個頁面上輸入用戶名和口令,這會讓用戶覺得我們的網站相當的SB。爲了實現這一功能,用得最多的技術就是瀏覽器的cookie,我們會把用戶登錄的信息存放在客戶端的cookie裏,這樣,我們每個頁面都從這個cookie裏獲得用戶是否登錄的信息,從而達到記錄狀態,驗證用戶的目的。但是,你真的會用cookie嗎?下面是使用cookie的一些原則。
用戶名:明文存放。 登錄序列:一個被MD5散列過的隨機數,僅當強制用戶輸入口令時更新(如:用戶修改了口令)。 登錄token:一個被MD5散列過的隨機數,僅一個登錄session內有效,新的登錄session會更新它。 2)上述三個東西會存在服務器上,服務器的驗證用戶需要驗證客戶端cookie裏的這三個事。 3)這樣的設計會有什麼樣的效果,會有下面的效果, a)登錄token是單實例登錄。意思就是一個用戶只能有一個登錄實例。 b)登錄序列是用來做盜用行爲檢測的。如果用戶的cookie被盜後,盜用者使用這個cookie訪問網站時,我們的系統是以爲是合法用戶,然後更新“登錄token”,而真正的用戶回來訪問時,系統發現只有“用戶名”和“登錄序列”相同,但是“登錄token” 不對,這樣的話,系統就知道,這個用戶可能出現了被盜用的情況,於是,系統可以清除並更改登錄序列 和登錄token,這樣就可以令所有的cookie失效,並要求用戶輸入口令。並給警告用戶系統安全。 4)當然,上述這樣的設計還是會有一些問題,比如:同一用戶的不同設備登錄,甚至在同一個設備上使用不同的瀏覽器保登錄。一個設備會讓另一個設備的登錄token和登錄序列失效,從而讓其它設備和瀏覽器需要重新登錄,並會造成cookie被盜用的假象。所以,你在服務器服還需要考慮- IP 地址, a) 如果以口令方式登錄,我們無需更新服務器的“登錄序列”和 “登錄token”(但需要更新cookie)。因爲我們認爲口令只有真正的用戶知道。 b) 如果 IP相同 ,那麼,我們無需更新服務器的“登錄序列”和 “登錄token”(但需要更新cookie)。因爲我們認爲是同一用戶有同一IP(當然,同一個局域網裏也有同一IP,但我們認爲這個局域網是用戶可以控制的。網吧內並不推薦使用這一功能)。 c) 如果 (IP不同 && 沒有用口令登錄),那麼,“登錄token” 就會在多個IP間發生變化(登錄token在兩個或多個ip間被來來回回的變換),當在一定時間內達到一定次數後,系統纔會真正覺得被盜用的可能性很高,此時系統在後臺清除“登錄序列”和“登錄token“,讓Cookie失效,強制用戶輸入口令(或是要求用戶更改口令),以保證多臺設備上的cookie一致。
2)修改電子郵件。(電子郵件通常用來找回用戶密碼,最好通發郵件或是發手機短信的方式修改,或者乾脆就不讓改一一用電子郵件做帳號名) 3)用戶的隱私信息。 4)用戶消費功能。
找回口令的功能找回口令的功能一定要提供。但是很多朋友並不知道怎麼來設計這個功能。我們有很多找回口令的設計,下面我逐個點評一下。
|
web系統如何設計登陸功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.