2011-07-06 69 views
2

我正在構建一個網站,用戶可以使用網站的消息系統(基本電子郵件系統)創建帳戶並互相發送消息。如果用戶A收到來自其他用戶B的消息,我想通過他/她的電子郵件地址自動通知用戶A.此外,我想保存用戶A不必輸入他/她的登錄憑據到網站以訪問此消息。安全風險:通過GET參數自動登錄

給User-A發送一封特殊的鏈接,並在網站上自動登錄他/她是不是一個好主意?例如:「請點擊www.domain.com/?message_id=1 & hash = abc123」(我可以使用has值自動將用戶A登錄到他/她的帳戶並查看特定消息)。

該電子郵件已經包含用戶B發送的消息。用戶A必須前往該網站才能回覆。

我想我的假設是,這個鏈接是安全的,因爲它會直接發送給用戶A,他/她應該有他/她的電子郵件安全。此外,我可以使散列只工作一段時間或第一次點擊後等。

+0

請記住,電子郵件通常是以純文本形式發送的,因此您絕對不能將任何放入電子郵件中的內容視爲「安全」。 –

+0

您對Flimzy的建議有什麼看法?它需要cookies。 – StackOverflowNewbie

+0

我同意如果您尚未登錄(使用適當的cookie),讓哈希URL將您指向一次性登錄頁面的想法。這樣,如果有人從電子郵件的鏈接中發現了惡意,那麼他們無法使用它在沒有有效的登錄cookie(或用戶名/密碼)的情況下登錄。當然,爲了保證安全,您需要讓所有流量都通過https://,否則cookie也會在網絡上解密(並且可能會以與電子郵件相同的方式被盜取)。 –

回答

2

這種事情的正常做法是有一個一次性授權頁,用戶被帶到第一次點擊其中一個鏈接。此授權頁面要求用戶輸入完整憑證(用戶名,密碼等),並詢問他們是否從可信/永久計算機連接。如果他們回答是,那麼它會在瀏覽器中存儲一個cookie,以便您的應用程序在將來的訪問中知道瀏覽器已被驗證屬於該用戶。

在內部,您需要存儲該Cookie的ID和用戶的ID,以便您可以在返回訪問時驗證該Cookie與用戶匹配。

您也可能希望通過註冊過程向用戶註冊的電子郵件地址發送另一封電子郵件,並附帶一個必須用於註冊其瀏覽器的魔術令牌。這可以防止第三方竊取他們的電子郵件並猜測他們的密碼。當然,它不能防止攻擊者訪問他們的郵箱。