2009-08-20 107 views
4

阻止用戶在Rails中共享會話Cookie的最佳方式是什麼?在Rails中阻止惡意用戶之間的會話共享

我想我有一個很好的辦法做到這一點,但我想通過堆棧溢出人羣來運行它,看看是否有先簡單的方法。

基本上我想如果有人試圖與他人分享付費會員來檢測。用戶在登錄時已經從多個不同的子網登錄過,但有人試圖通過共享會話cookie來解決這個問題。沒有將會話綁定到IP(許多合法人員使用旋轉代理),做到這一點的最佳方式是什麼。

我發現最好的啓發是B類子網/時間的#(某些ISP使用旋轉代理不同的CS類)。這對我們產生了最少的誤報,所以我想堅持這種方法。

現在我正在考慮爲每個請求應用一個before過濾器,以便跟蹤用戶在memcached中使用的哪個Subnets和session_ids,並將啓發式應用於該過程以確定Cookie是否被共享。

任何更簡單/更容易實現的想法?任何現有的插件,這樣做?我能想到的

回答

1

您可以將會話信息綁定到瀏覽器信息。如果人們在一段時間內使用3種或4種不同的瀏覽器類型,則可以推斷出可疑事件可能正在發生。

另一個答案依賴於一點社會工程。如果您有一些您信任的啓發式方法,則可以警告用戶(位於頁面頂部)您懷疑他們正在分享他們的帳戶,並且他們正在密切關注。警告中的「聯繫我們」鏈接將允許合法用戶解釋他們自己(並因此被永久性地取消標記)。這可以將問題最小化,足以將其從您的雷達中解救出來。

+0

Ron, 感謝您的迴應,我選擇了您的Jesse's,因爲我擔心他的方法中可能的競爭條件。不幸的是,我已經實現了一個基於子網的方法,但如果有任何問題,這是列表中的下一個。 – 2009-08-22 14:33:56

+0

很高興它適合你。出於好奇,你會徹底禁止你懷疑的人,還是以某種類似於我所建議的方式警告他們? – 2009-08-22 16:46:08

1

一種方法是在會話和與每個頁面刷新一個cookie都設置相同的隨機值。檢查兩個以確保它們相同。如果有人分享他們的會話,cookie和會話將不同步。

+0

這是一個好主意。 問題,這可能會導致野外的競爭條件?如同,如果有人中途點擊一堆鏈接打開標籤中的em,你是否認爲序列可能會混亂並給出誤報? 無論如何,我最終只是按照我今天下午提出的方式實施它,因爲我需要完成它。 – 2009-08-21 07:43:51

相關問題