我使用會話的所有在我的應用程序。我想讓他們更安全。目前我使用的代碼如$username = $_SESSION['username'];
等。
如何讓我的會話更安全?
我使用會話的所有在我的應用程序。我想讓他們更安全。目前我使用的代碼如$username = $_SESSION['username'];
等。
如何讓我的會話更安全?
你要注意的第一件事是Session Hijacking。引述維基百科:
在計算機科學中,會話劫持是指有效的計算機的開發會議,有時也被稱爲一個會話密鑰,以獲得在計算機系統中的信息或服務的未授權訪問。特別是,它被用來指盜竊用於向遠程服務器認證用戶的魔術cookie。它與Web開發人員特別相關,因爲攻擊者使用中間計算機或訪問受害者計算機上保存的cookie可以很容易地竊取用於在許多網站上維護會話的HTTP cookie(請參閱HTTP cookie theft)。
基本思路是,如果有訪客來到你的網站(愛麗絲)的會話cookie和會話ID(我們假設它是12345
),那麼如果一個惡意用戶(賁門)能夠學習Alice的會話ID通過JavaScript,流量嗅探,社交工程或其他方法,然後馬洛裏可以瀏覽到您的網站,並設置他的會話ID爲12345
,他實際上成爲愛麗絲。防止這種
一種方法是改變每個請求,您可以通過PHP session_regenerate_id
function做的會話ID。在致電session_start()
之後,您可以在每個請求開始時致電session_regenerate_id
請注意,這是一個非常複雜的話題。我強烈建議閱讀維基百科文章,並確保您完全理解遊戲中的問題。
編輯:我打算爲你輸入更多信息,但後來我意識到你的問題確實是重複的of this StackOverflow question。我建議以此爲起點。
在數據庫中的密碼採用MD5版本,然後MD5加密會話密碼,所以如果密碼是正確的,那麼這兩個值是相同的。
這取決於你想要保護的東西。如果您擔心會話中包含的信息可能會被暴露或修改,您不必擔心,因爲它只能被服務器查看和修改。
如果你擔心有人會利用別人屆可能性,你可以做到以下幾點:
您只是將一個值分配給一個變量。這個代碼超出範圍並不重要。你爲什麼認爲你的方法不安全? – 2011-01-25 21:01:21
您還可以在客戶端登錄時將客戶端的IP地址和瀏覽器用戶代理存儲在會話變量中。這樣,您可以在每個後續請求中對其進行驗證。 對於XSS,欺騙會話ID比IP地址 – dirkbonhomme 2011-01-25 21:12:59