我正在爲我正在構建的網站編寫登錄系統。
這裏是我如何實現登錄系統的本質:如何實現Web應用程序的登錄系統?
我有兩個表:用戶和會話。
users: uid | uname | pass
sessions: sid | uid | ts | ts_expires
所以用戶輸入uname/pass組合。
- 如果組合不正確,我重定向到「不良認證」頁面。
- 如果組合是正確的,I:
- 生成隨機的sessionid(
sid
) - 插入記錄
sessions
與提供的用戶名的UID該SID相關聯。 - 設置一個名爲
sid
的cookie,其中隨機sid
的值剛剛插入sessions
。
- 生成隨機的sessionid(
在需要用戶對每個頁面進行登錄,我檢查:餅乾
- 是否設置
- 如果SID是有效
所以我的問題是:
- 這個機制有什麼潛在的問題?
- 良好的登錄系統應該如何實施?
PS:我還沒有使用SSL安全登錄。所以這是我現在發現的唯一問題。哦,我使用PHP和MySQL,如果這是相關的。
編輯:我存儲的密碼不是以純文本格式,而是以用戶名與密碼連接的MD5存儲的。
那麼,pass = MD5($uname.$pass)
,可以這麼說。
MD5可能容易受到暴力破解。爲了更好的安全性,可以使用不同的鹽進行多次散列。使用用戶名進行醃製並不是一個好主意,因爲這是一個潛在的黑客知道的價值。 – 2010-01-06 18:02:21
所以你說我應該用隨機鹽進行哈希計算,並將salt與用戶表中的uname/pass一起存儲,是嗎? – jrharshath 2010-01-06 18:11:32
正確。鹽也可以是明文。 – Malfist 2010-01-06 18:26:07