2009-10-01 160 views
0

我有一個網站,其中人們的「登錄」狀態由他們的會話cookie(以及他們登錄後獲得的會話內的值)確認。該cookie設置爲httpOnly &需要SSL。ASP.NET會話狀態安全問題

比方說,某人有2個Firefox窗口打開,窗口(A)有我的應用程序和他們登錄和窗口(B)有別的東西打開。

如果他們沒有明確的退出時關閉窗口(A),然後打開一個新的窗口(C)和訪問登錄,只能從我的web應用程序資源,它仍然會加載,因爲cookie是仍然有並且他們被認證。我的會話超時已經很低,但我需要阻止這種攻擊的可能性,因爲人們可以在公用計算機上訪問他們的數據。

我該如何防止這種情況發生?

+0

你是在談論新的瀏覽器窗口或新標籤在同一個瀏覽器? – Kamarey

+0

@Kamarey:一個新的瀏覽器窗口。如果(A)在沒有註銷的情況下關閉並且打開一個新窗口(C),並且將前一個(A)的URL複製到(C)中,則我可以再次訪問登錄的內容。 – Alex

+0

我知道最新版本的Firefox在關閉所有窗口後甚至保持同一會話。下一次您將繼續像以前一樣使用同一個會話。可能你的cookie已經超時了,因爲你的超時時間非常短。 – Joop

回答

1

不知道其他瀏覽器,但Firefox在所有瀏覽器窗口中保持相同的會話ID。您應關閉Firefox的所有窗口以生成新的會話ID。因此,在您的示例關閉窗口A和B,然後打開C,你應該重定向到登錄頁面或其他東西。

0

你可以去一個簡單的方法來銷燬window.close事件上的cookie。

0

大多數瀏覽器都具有此功能,因爲所有窗口都可以爲同一個站點共享相同的會話cookie。我不知道服務器端阻止瀏覽器執行此操作。

如果您確實需要從發生,那麼我只能建議存儲在頁面的附加值自己或查詢字符串,並確認您的會話中該值阻止這一切。

雖然這可能會證明您的安全性已經徹底改變。