2013-06-21 43 views
4

有沒有辦法檢查用戶A的cookie是否被服務器端用戶B盜用?服務器端檢查cookie是否被盜

例如cookie的令牌/使用簡單的散列函數(SHA1例如)

hash_of(user_agent,ip+proxy_ip,username,random_session_key) 

where user_agent is browser's user agent, 
    ip is the client IP address, 
    proxy_ip is the proxy's IP address the client use, 
    username is the username the user currently login, 
    random_session_key is a random number saved to database when a user logged in 

如果該cookie被盜和由另一人在LAN上使用,並且LAN沒有使用任何創建的數據代理但NAT,並且小偷使用的是完全相同的瀏覽器(或欺騙用戶代理),我們在服務器端如何檢測?

+1

_「並且局域網不使用任何代理,而是使用NAT,並且小偷使用的是完全相同的瀏覽器(或欺騙用戶代理),我們如何在服務器端檢測到這一點?」 - - 根本不... ?要區分彼此的兩件事情,你必須至少有一個關於他們每個人的信息有所不同。如果你找不到這樣的信息,那麼你就無法將它們分開。 – CBroe

回答

5

是的,有一種方法。它被稱爲Secure Cookie Protocol

您使用SSL的權利? (因爲如果你不是,整個談話都毫無意義)。

那麼,你加密的cookie,但使用SSL會話標識符。假設SSL爲您提供了足夠的端點安全性(強密碼等),SCP應該保護您的數據,並讓您知道另一個SSL會話何時嘗試使用同一個cookie(因爲會話ID改變,MAC因此會改變)。

key = HMAC(user name|expiration time, secret_key) 
cookie = user name|expiration time|encrypt(data, key) 
cookie = cookie | HMAC(user name|expiration time|data|sessionid, key) 

所以基本上,你基於SSL會話標識符創建一個唯一的驗證碼。

注意REMOTE_ADDR或用戶代理從不因素,這種用途的東西,是非常不平凡的欺騙,除非你身體損害了客戶端對話框中的唯一因素...

相關問題