2012-03-04 200 views
1

我一直在Google上搜索幾個小時,但每個人都以不同的方式處理它。Cookie Stealer /登錄系統(PHP)

所以我不知道如何當有人登錄的處理信息。

我以爲我會保存在會話的用戶ID,名稱和用戶代理的數據。但是如果有人竊取了cookie的內容並將其自己的cookie替換爲被盜的cookie呢?

是的,那其實就是我的問題。我怎樣才能「保護」用戶?檢查IP以及?還要別的嗎?

謝謝, Albin。

+0

只要確定我確切地知道你在問什麼,你正在尋找方法來阻止會話劫持從像FireSheep,FaceNiff等應用程序?還是我太具體? – 2012-03-04 18:55:57

+0

你太具體了..我一直在考慮防止餅乾偷竊者 – albin 2012-03-04 18:59:40

回答

0

測試IP是否保持不變將是一種方法。但是最好測試它是否與給定的子網掩碼相匹配(例如255.255.0.0),因爲有些用戶可能有動態IP。

另一種「保護」測量是測試瀏覽器的用戶代理是否與用於登錄的用戶代理相同,但當然這很容易繞過。

請確保您僅爲您的域名或子域名設置了Cookie,並且請務必檢查您的代碼是否允許任何XSS flaws,因爲這些通常可用於竊取cookie。

+0

所以,實際上沒有其他辦法嗎?我正在考慮一個cookie,它會隨着你所做的每一個請求而改變,這個hash將被保存在數據庫中。但問題是:如果用戶打開了2個選項卡/窗口會怎麼樣?吮吸。 – albin 2012-03-04 18:55:26

+0

也可能有其他方法。你提到的並不是其中之一:攻擊者也可以竊取包含散列的cookie,然後發送他的請求。這會阻止原始用戶提出進一步請求,但不會阻止攻擊者。 – Chris 2012-03-04 18:59:35

+0

是的,但攻擊者沒有那麼多時間來完成。 – albin 2012-03-04 19:02:06

4

沒有一個會話ID或Cookie被竊取是瀏覽器必須處理的任務。有一些概念方法可以防止第三方瞭解您的cookies的內容,如same origin policy

您可以通過設置cookie的http-only標誌來幫助瀏覽器。請參閱setcookie的參數$ httponly。如果cookie被標記爲僅限http,則瀏覽器將無法訪問JavaScript等腳本。該cookie只會在原始的http-header中傳輸。這實際上可以消除基於XSS會話捕獲的風險,因爲它們通常使用javascript。

另一大攻擊是man in the middle attack。攻擊者可以訪問客戶端和服務器之間的流量。他現在可以閱讀http標題,因此可以查看cookie並模仿請求。他甚至可以欺騙客戶的IP地址。爲了防範這種攻擊者,您需要加密連接。大多數網站爲此使用HTTPS

如果您只需要認證,也可以使用HTTP's digest authentication。有一個使用PHP here的摘要身份驗證的工作示例。