2011-10-22 83 views
2

今天下午我注意到了一些非常有趣的事情 - 當我清除我的瀏覽器緩存和Cookie時,Twitter立即讓我出去。Twitter.com如何在註銷緩存後註銷用戶?

我假設他們每隔一秒左右通過Javascript輪詢一次認證cookie,並在缺少cookie的情況下注銷用戶。任何其他猜測如何做到這一點?因爲這是我第一次遇到這種行爲,所以我想知道它是多麼普通,實現它的最佳方式,以及實現它時應該具有的任何安全問題(如果有的話)。

回答

3

任何網站知道您登錄的唯一方法是通過您的瀏覽器在隨後的請求中發送的cookie。如果cookie不再存在,那麼根據定義,您不再登錄到他們的網站。

我不完全確定你在問什麼「最好的方法來完成它」。最好的方法來完成什麼?

如果你問什麼是最好的方式來完成保持瀏覽器登錄通過cookie,然後歸結爲存儲會話或用戶ID在cookie中。會話ID更受歡迎,因爲它是每個「會話」的不同值。

關於在安全方面使用cookie有多常見:它們幾乎無處不在。唯一的時間cookie不用於存儲會話ID是否會話ID出現在查詢字符串中。

現在出於安全考慮。通常這些cookie的使用壽命非常有限,即對於瀏覽器會話,因此當您關閉瀏覽器時,cookie會過期。如果網站啓用了SSL,那麼Cookie的內容在通過網絡時被加密。如果沒有,那麼對於中間人或數據包捕獲攻擊,你沒有任何防禦措施。 (查看firesheep)。

+0

我想我的問題,然後成爲什麼是檢查auth cookie的最佳方法?是否有建議的做法,監測它的時間間隔等等......據我所知,這是非常罕見的行爲。大多數網站不會主動在客戶端監控cookie,只關心新請求是否經過驗證。 –

+0

@Derek Hunziker:他們沒有監控cookie。 Twitter通過ajax將請求發送回其服務器。根據定義,每個請求都會傳遞cookie。如果cookie不存在,您必須重新登錄。這裏沒什麼神奇的。 – NotMe

+0

@Jeff Ferland:你是對的,不知道我在想什麼。更新了答案。 – NotMe

3

當您打開twitter時,一些javascript代碼會定期輪詢服務器以獲取新的推文。發生了什麼事,你清除緩存的時間非常接近於輪詢時間,所以看起來你的緩存清除功能已將你註銷,實際上它只是一個預定的民意調查。既然你清除了你的cookies,當twitter去檢查更多的推文時,這個請求沒有你的登錄cookie和服務器登出你。

我剛剛測試過這個,當我清除我的cookies時,沒有任何反應,直到twitter試圖獲得更多的推文。