我使用私人訪問在PHP中構建應用程序。有登錄兩種方式:在PHP中使用cookie登錄安全問題
- 登錄方式:用戶名和密碼
- 餅乾:餅乾記得用散列信息(用戶名,鹽等)
爲了防止機器人做了畜生強制攻擊,服務器創建一個會話(一個帶有session_start的cookie),在4次嘗試之後,用戶必須等待5秒纔再次嘗試。我使用超全局變量$ _SESSION來檢查某人嘗試連接的次數。
我的問題是關於不允許cookies的用戶。在這種情況下,他們不會每4次嘗試等待5秒鐘。我有點困惑關於防止暴力破解的最好方法:
- 在檢查一個IP有多少次試圖
- 或者簡單地防止用戶在沒有會話cookie從連接連接數據庫創建一個登錄表
感謝,
您的#2無法正常工作,因爲* everyone在第一次登錄嘗試時將擁有* no session cookie *。限制嘗試的唯一解決方案是跟蹤每個IP;在這種情況下,Cookie根本沒有任何作用。 – deceze 2014-10-01 12:51:52
在會話中存儲登錄嘗試是毫無意義的 - 因爲我只需要重新開始一個新會話即可。 (和「獲得一個新的會話」基本上只需要發送一個不同的隨機會話ID。)您應該將該信息存儲在用戶對象(在您的數據庫中)。 – CBroe 2014-10-01 12:53:02
好的,謝謝,我想每個人在第一次嘗試時都會有一個會話cookie,因爲它是在checkLogin腳本的開頭創建的。事實上,一個PHP會話只需要發送一個隨機會話,沒有想到這一點。在數據庫中存儲信息看起來不錯。謝謝, – Yoan 2014-10-01 13:01:38