2012-06-06 139 views
2

我對不使用SSL的PHP​​會話安全性感興趣。通過數據包嗅探保護經過身份驗證的PHP會話免受會話劫持攻擊

令我驚訝的是,如果一箇中間人嗅探用戶和服務器之間交換的數據包,即使它被認證,也很容易竊取會話。我知道有一些策略可以限制損失,例如,登錄/註銷時更改sessionid,記錄/檢查用戶系統參數(例如操作系統,瀏覽器)。

但是,如果在一個已經過身份驗證並且沒有註銷的會話期間(沒有超時的時間),攻擊者能夠獲得會話ID,然後他可以輕易地劫持會話(儘可能我理解這個問題)。

我想到了一種可能的解決方案,在加密的登錄驗證期間,服務器可以向客戶端發送隨機會話密碼。會話密碼僅在該登錄會話期間有效。因此,在該會話期間交換的每個消息都必須使用會話密碼(例如MD5(會話密碼+消息內容))進行簽名。

問題是否修復?假設攻擊者無法對最初的登錄交換進行密碼分析,這種方法的缺點是什麼?

+2

沒有違法,但考慮只使用SSL ......它可能耗資約$ 49 - 每年$ 100,但是它比不必支付開發者維護自定義'安全scheme' –

+0

+1便宜得多。此外,@JoãoSalada,隨機會話密碼如何在沒有SSL的情況下發送? –

+0

沒有冒犯! ;)我只是想從頭開發我的博客,所以我可以理解這個主要問題。但是當你不需要保密(我的意見)時,使用ssl是一個巨大的矯枉過正。該方案雖然我對看起來很簡單,但...這就是爲什麼我要問,如果它解決了問題,或者是有缺陷的..從保密 – Leaurus

回答

3

您提出的「簽名」解決方案需要客戶端行爲 - 因此您需要一個可以執行簽名的客戶端應用程序。

如果您正在編寫Flash/Java applet/Unity或任何這些插件,那麼您可以按照您的計劃進行操作,因爲您可以更密切地控制客戶端並添加例程來執行簽名。

但我假設你不使用插件將HTML頁面傳遞給瀏覽器?如果是這樣,你有兩個選擇,真的。首先是SSL(你排除在外),因爲它內置在瀏覽器中。第二個是Javascript。爲了最大限度地提高安全性,您需要以某種方式模仿SSL,包括加密(公共)密鑰/ algorythm的客戶端存儲(以便它們不會與消息一起旅行)。你希望儘可能接近公鑰/私鑰+握手SSL - 這絕對不是什麼大事。正如sarnold所建議的那樣,您需要一個強大的加密密鑰。查看http://www.jcryption.org/作爲例子 - 其他人出現與谷歌搜索。

如果這是一個有點過度的頂部,你最可行的解決方案可能會使用JS談判簡單encyption algorthym:你發送一個「關鍵」在瀏覽器中的cookie,存儲的「鑰匙」,通過AJAX的所有通信並根據該密鑰創建一個更簡單的簽名機制(以及可能在初次握手期間與客戶共享的另一個變量)。任何不解碼或匹配的密鑰,然後殺死整個會話,然後重新開始。


sarnold在他的回答中有很好的一點:md5和SHA-1是要避免的;有的甚至認爲SHA256是越來越wesk今天的電腦,但考慮到你需要implment在JS的解決方案,爲速度,你可以依賴的東西爲「piddly」(我的比喻)爲MD5。所以你最好的防禦措施是準確的記錄和暴力/錯誤檢測。任何郵件到達亂碼(你可以檢查任何一端)應該被記錄和監控。太多的故障和IP地址被禁止 - 並保持記錄。

+0

我在想第二個選擇,那個網站就是我想要的。 ;)作爲SSL和TLS方案一部分的公鑰/私鑰方法存在的問題是它需要一個昂貴的簽名證書。如果在另一方面,一個使用不是由那些Verisign所簽發的證書,等瀏覽器會回報你一個大的警告,大部分的人會自行消失。這是我的博客... – Leaurus

+1

證書就可以了低至約20 $每年。例如:http://www.hostnexus.com/solutions/certificates-compare.php。價格的唯一區別是真正與他們一起出現的保險和掛鎖。你會花費更多的時間去嘗試讓非ssl解決方案工作。但如果一個人去,很高興我能幫上忙。 – Robbie

2

你會想要使用類似HMAC而不是簡單的MD5--而且你想要使用SHA256或更高版本,因爲MD5已知存在弱點,而SHA-1也開始感覺疲軟。

但即使發生這些變化,您的方案仍然容易受到replay attacks的攻擊,攻擊者可能會一遍又一遍地重新發送請求,並且您的服務器會很樂意每次都重新執行它。如果它只是發佈最新的海灘之旅的照片,但如果它發送1000美元的購買請求,這是沒有什麼大不了的,但有人會得到比預期更多的小馬。

所以你需要添加一個nonce協議。

有可能存在其他問題 - 畢竟,在三次SSL之後,TLS現在處於1.2版本。只要堅持使用TLS並且很高興。

+0

是,MD5是容易受到攻擊的前綴。我以MD5爲例。不過謝謝你。只是想知道該計劃是否有一些優勢。以及關於隨機性,你是絕對正確的。謝謝;) – Leaurus