我決定爲我的應用程序處理身份驗證的最佳方式是從頭開始編寫我自己的會話處理程序。就像在外星人一樣,它是唯一能確保一件事情按照你想要的方式完成的方法。智能PHP會話處理/安全
這就是說,我談到我在充實最初的設計時遇到了一些障礙。我原本打算以混合方式使用PHP的會話處理程序,但我擔心與我的數據庫併發問題。這是我打算:
我做的第一件事是檢查IP地址(或者甚至可能會話)到蜜罐未經授權的嘗試。我寫了一些睡眠不佳的條件。這裏的大問題顯然在哪裏存儲我的黑名單以獲得最佳讀取速度。
session_id生成,散列並存儲在$ _SESSION [myid]中。一個單獨的相同標記片段存儲在第二個$ _SESSION [mytoken]中。然後將相應的數據存儲在表X這是我不確定的位置(這是此問題的根源)。
然後,每個後續請求都會驗證[myid] & [mytoken]是我們所期望的,然後爲下一個請求重新發布新憑據。
根據會話的狀態,可以執行更明顯的ACL功能。
這是我的偏執會話處理程序的高層次概述。這裏是我真的堅持的問題:
一,什麼是存儲IP ACL的最佳方式?我應該寫信給hosts.deny嗎?我的方法有什麼性能問題嗎?
二,我的MitM預防方法看起來好嗎,還是比較多個索引時我太過分偏執?存儲這些信息的最佳方式是什麼,所以我不會碰到80-100個用戶的磚牆?
三,我是否在持續的會話重新生成和回寫中不必要地抨擊我的服務器?有沒有更好的辦法?
我最初爲小型應用程序編寫此代碼,但我更願意將它保留爲可與世界共享的可重用組件,所以我想確保儘可能使其可訪問且安全。
在此先感謝!
我一直在考慮所有來自技術角度的人:純文本,mysql(擔心鎖定),NoSQL ala Mongo等等。我向所有的建議敞開! – VSack 2011-04-04 16:22:35
如果每次請求重新發出下一個請求的新憑據,可能會破壞基於選項卡的導航。此外,還有一些公司有多個互聯網連接(冗餘,負載平衡),因此同一用戶的兩個請求可能來自兩個不同的IP地址。 – 2011-04-04 16:30:20
我絕對考慮到多重IP問題,只對拒絕請求的IP進行完整性檢查,但是留下session_id的中間人檢查。 – VSack 2011-04-04 17:19:04