2009-04-09 59 views
2

我注意到有些網站(例如gmail)允許用戶通過https進行身份驗證,然後切換到帶有非安全cookie的http,以便主要使用該網站。網站如何安全地支持http(非SSLed)會話?

如何讓http訪問會話,但仍然安全?或者它不安全,因此這就是爲什麼gmail提供使用https保護整個會話的選項?

請舉例說明這是如何工作的,並避免會話劫持攻擊,同時仍允許通過http訪問經過身份驗證的內容。我希望能夠在安全的情況下實施這樣的方案,以避免出於性能原因必須將整個站點作爲https。

回答

2

正如蒂洛說,但我會解釋遠一點:)

一個Web服務器是無狀態的!這實際上是認證案例的問題。你不能只登錄,然後說「從現在開始,這個用戶已經登錄了」 - 你需要一些方法來確定這次請求新站點的是哪個用戶。

這樣做的一種常見方法是通過實施會話。如果您在登錄網絡時嗅探網絡流量,然後瀏覽網站,您通常會注意到以下類似內容:

登錄:您將傳輸用戶名和密碼到服務器。完全未加密! (SSL/HTTPS將加密此請求以避免中間人攻擊)

響應:您將收到一個隨機生成的很多奇怪字符的字符串。這些通常會存儲在cookie中。

請求某個站點只有您應該有權訪問:您將隨機生成的字符串傳輸到服務器。服務器將查找此字符串,並查看它與您的會話相關聯。這允許服務器識別您並授予您訪問您的網站的權限。

..現在,HTTP本身並不安全。這意味着您的密碼和會話cookie(隨機生成的字符串)將完全未加密傳輸。如果有人可以訪問您的流量(通過特洛伊木馬,路由器劫持等等),如果您不使用HTTPS,他將能夠在您登錄時看到您的用戶名/密碼。這將授予他訪問您的網站,直到您更改您的密碼(除非他先改變它:P)。在剩餘的請求中,他將能夠獲得會話cookie,這意味着他可以在該cookie生命週期的其餘部分竊取您的身份(直到您註銷,或會話在服務器上到期)。

如果您想感到安全,請使用HTTPS。但實際上,社交工程師將鍵盤記錄器加入您的計算機比讀取所有流量要容易得多:)

(或者像其他人指出的那樣,使用跨站點腳本來讀取您的會話cookie)

2

只有在密碼沒有以明文形式傳輸時纔是安全的。有可能(並且已經完成)以HTTP模式攔截和濫用GMail會話cookie。

爲了避免會話劫持,您需要保持HTTPS模式(我認爲GMail現在提供這種模式)。

+0

好吧,它會減輕某些類型的會話劫持,但它不是一個銀彈。 – 2009-04-09 10:05:32

+0

HTTPS:沒有銀子彈,但必要的第一步? – Thilo 2009-04-09 10:12:20

1

這隻比普通HTTP更安全 - 登錄名/密碼不會以純文本形式傳送。除此之外,它的功能與普通的基於HTTP cookie的會話完全相同(因爲它就是這樣)。因此,所有會話劫持問題都適用。

1

這不是真的可能,也不安全。這就是爲什麼我們獲得「安全Cookie」的原因。雖然它對抗被動嗅探攻擊很好,因爲用戶名/密碼不會被暴露,但會話劫持仍然是可能的。

也檢查了這SSL Implementation Security FAQ紙。