不,不是遠程安全的。你有沒有保證,Cookie不採用明文存儲(事實上,大多數實現做它們保存爲純文本)。
你要知道,「記住我」本質上是不安全的,因爲任何人都截獲的cookie獲取訪問應用程序。但暴露用戶的密碼使得它更加不安全。 :-)如果他們發現,可能會讓用戶非常生氣。
我用它結合了用戶的帳戶名與令牌是除了在我的服務器上的表與用戶的賬戶相關聯的(其他)方式相結合的加密cookie字符串。當用戶返回該網站時,我們解密該cookie並查找該令牌是否實際上與該帳戶相關聯。令牌(以及cookie)會更改每次自動登錄,並使用於該自動登錄的那個無效。 (有令牌和賬戶之間的多到一的關係,允許從多個位置自動登錄,你可以限制,如果你喜歡。),如果他們沒有在X天內使用令牌超時。 (這不僅通過限制cookie的持續時間來完成;它也完成了服務器端。)還有一些其他的東西我扔在那裏,使生活難以嘗試解碼cookie(已成功解密它)或使用被盜的cookie(不需要解密)的人的位,但沒有意義在過度殺傷(再次,「記住我」本質上是不安全的)。
我在強健的安全並非真正必要(顯然)並且擁有大量動態IP客戶端的站點上使用它,所以我不會嘗試將其鎖定到IP。但即使將其鎖定到IP也不能保證安全,它只是減少了攻擊面。
您可能想知道爲什麼我在cookie中擁有用戶名。對於直接「記住我」的目的,即使它被加密(畢竟,它是用戶名+密碼系統中的認證對的一半),我也不會建議它在那裏。當我提醒自己我們是如何爲這個問題做了這件事的時候,當我看到格式時,我有點驚訝地發現它在我們的cookie中;但後來我看到了解釋爲什麼它在那裏的意見,並且有與「記住我」無關的原因(事後回想起來,原因不一定是有說服力的原因)。
最後一點,「記住我」本質上是不安全的事實是站點日誌非常重要的原因之一,以及爲什麼在允許更改重要帳戶信息的過程中需要密碼重新驗證使竊取cookie的人更難以掌握該賬戶的所有權)。
讓FormsAuthentication這樣吧! FormsAuthentication.SetAuthCookie(username,true); – 2010-01-20 11:04:46