當我們在任何ASP.NET框架(ASP.NET MVC,Web窗體等)中使用ASP.NET窗體身份驗證時,我們將身份驗證Cookie保存在客戶端的瀏覽器中。作爲最佳做法,我們將Cookie設置爲HttpOnly並保密。我們還通過SSL進行所有交易。無論我們使用哪種機制對用戶進行身份驗證(OAuth,ASP.NET會員提供程序等),我們仍然需要持續進行身份驗證才能獲得更好的用戶體驗。ASP.NET窗體身份驗證和持久性身份驗證Cookie安全
隨着所有這些,我假設有人仍然可以從客戶端瀏覽器獲取cookie並使用這些auth cookie值發出請求。這不能被服務器檢測到,我們會將受保護的數據提供給其他人。
一個人想到要降低風險,這裏是每當他/她嘗試採取一些嚴肅的行爲(例如更改電子郵件地址,訪問個人資料信息等)時詢問客戶的密碼,但是這個沒有解決任何問題,可能會讓客戶非常討厭。
您是否有任何方法可以針對此類問題積極處理?或者什麼是在客戶端瀏覽器中堅持認證的最佳方式?
感謝特洛伊,非常好的回答和很好的建議。我應該承認,我忽視了將'slidingexpiration'設置爲'false'。我假設這使得過期票不能重新激活。這也給系統增加了一個信心。你怎麼看? – tugberk 2012-08-03 09:36:31
滑動過期在啓動時的作用是將會話超時應用於*上次請求*,但當它關閉時,會將其應用於*會話的開始*。假設你有20分鐘的超時時間,並積極使用系統10分鐘。當滑動到期時間爲*時,超時將在30分鐘後發生。當它關閉*超時將發生在20分鐘。關閉它會減少劫持帳戶的機會窗口,但會對可用性產生不利影響。如果你的系統是人們進入的系統,那就快速做他們需要的東西,然後離開,把它關掉。 – 2012-08-03 10:05:46
然後,無論哪種方式,過期的auth cookie都無法使用並重新激活,對吧? – tugberk 2012-08-03 10:13:48