2012-06-18 38 views
0

我一直在考慮用戶身份驗證,會話/ cookie以及會話劫持帶來的安全風險等問題。據我所知,使用安全的https://是最有效的方法,以及regenerate_session_id(),並使用隨機字符串進行驗證(在許多其他過程中)。使用數據庫和IP地址的PHP用戶認證?

我的問題是:是否有可能合併一種方法,放棄會話和cookie,並只使用數據庫保存的變量?

這裏是我將如何設置它:

- 具備在可容納一個IP地址的用戶表中的列,以及一個將是一個布爾值。

- 當用戶'登錄'時,將用戶的當前IP地址設置到數據庫中,並將布爾值設置爲false(如果用戶不想'記住')或true (如果他們這樣做)。

- 在頁面加載時,它檢查當前IP地址與用戶數據庫中存儲的IP地址。如果匹配,則該用戶被認爲是有效的。

- 在窗口關閉時,腳本會清除這些值,並且用戶將被「註銷」。如果用戶想'保持登錄狀態'(我知道這是一個巨大的安全風險),那麼一個切換鍵(布爾值)會簡單地停用註銷腳本,並且IP地址將保持存儲爲用戶。

這種方法的回退會是什麼?它甚至有可能嗎?

+1

動態和共享的IP地址可能會導致嚴重的問題是這種方式 –

+0

呀,我本來希望會有一個方式具體識別電腦,但我很快就意識到這樣一個概念不可能安全地工作,更不用說連續的了。 –

回答

4

IP地址根本不是用於唯一標識用戶的準確可靠的方法。在會話期間IP可能會更改,並且多個用戶代理可能正在使用相同的出站IP。

對不起:-)

+0

謝謝你提供的信息,我想如果它沒有任何人人都會做的倒退。我會回去做同樣的事情! –

3

我最近看到這樣一個系統上的IP檢查,並且它引起了無數問題,用戶是隨機斷開所有的時間(只要其動態IP變化)。只是不這樣做,IP可以改變,所以你不能依靠它們。

最有可能的,你應該看看現有的身份驗證方法,並嘗試實現。把事情簡單化。

+0

啊,我對動態IP地址功能的理解充其量只是微乎其微。感謝您的信息! –

1

「動態IP是一個問題」的現有答案是絕對正確的。考慮通過3G連接的移動設備。每個用戶走進一個新塔的IP變化的範圍時...