2011-01-25 60 views
1

可能重複:
PHP Session Security如何讓會話更安全?

我使用會話的所有在我的應用程序。我想讓他們更安全。目前我使用的代碼如$username = $_SESSION['username'];等。

如何讓我的會話更安全?

+1

您只是將一個值分配給一個變量。這個代碼超出範圍並不重要。你爲什麼認爲你的方法不安全? – 2011-01-25 21:01:21

+0

您還可以在客戶端登錄時將客戶端的IP地址和瀏覽器用戶代理存儲在會話變量中。這樣,您可以在每個後續請求中對其進行驗證。 對於XSS,欺騙會話ID比IP地址 – dirkbonhomme 2011-01-25 21:12:59

回答

4

你要注意的第一件事是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。我建議以此爲起點。

-1

在數據庫中的密碼採用MD5版本,然後MD5加密會話密碼,所以如果密碼是正確的,那麼這兩個值是相同的。

2

這取決於你想要保護的東西。如果您擔心會話中包含的信息可能會被暴露或修改,您不必擔心,因爲它只能被服務器查看和修改。

如果你擔心有人會利用別人屆可能性,你可以做到以下幾點:

  • 分析你的代碼,並確保你有沒有XSS缺陷。
  • 如果您的訪客正在使用公共網絡,請使用SSL來防止會話劫持。
  • 確保您的會話正在使用HTTP Only標誌