2012-06-26 44 views
1

在asp.net中,我可以像往常一樣使用表單身份驗證進行登錄,複製我們的身份驗證cookie值,註銷,使用'Edit This Cookie' 'Chrome的插件,刷新(匿名)登陸頁面,嘿presto我再次登錄。這似乎是一個漏洞 - 是否有任何方式使用標準格式auth修復它,或者我將不得不做一些類似於使用自定義的Authorize屬性來覆蓋現有的asp.net mvc屬性?表單身份驗證在asp.net中的Cookie值漏洞

+0

在執行此操作之前,您是否在web.config中啓用了Cookie保護機制? –

+0

<表格保護=「全部」被設置,如果這就是你的意思 – coalvilledave

+0

這是cookie的竊取!在第一種情況下,你不應該允許任何人複製餅乾:) – VJAI

回答

1

餅乾總是多變的,我們不能做太多的事情。我們可以做的是防止有人竊取cookie。

關於ASP.NET MVC它做了很好的工作來避免竊取cookie。一些它在默認情況下是安全的一部分主要事情是:

  1. 編碼爲渲染到視圖(如果您正在使用剃刀不知道其他人)的字符串從XSS攻擊預防。

  2. 請求驗證(停止有潛在危險的數據到達 應用程序)。

  3. 防止JSON數據的GET訪問。

  4. 防止CSRF使用防僞助手

關於餅乾Microsoft提供HttpOnly功能,這有助於隱藏在JavaScript中的cookie。您所說的表單身份驗證是一個HttpOnly Cookie意味着某人無法通過JavaScript竊取該信息,因此它更安全。

0

你可以用任何 cookie來做到這一點。您可以檢查/複製任何給定域中的所有cookie,並在需要時進行欺騙。你可以這樣做到你自己(僅)因爲它的PC(或用戶登錄到PC)。顯然,如果你在共享的PC上,這是一個問題(在你的所有信息中)。

「複製您的cookie」的行爲實際上是惡意軟件試圖竊取/劫持您的身份(或某些網站上的當前會話)的一種方式。這就是說,除非你有一些惡意軟件,否則你不能只是「複製其他人的cookies」。

假設logout完成後,您可以要求用戶關閉瀏覽器,以便從(文件)系統中刪除過期的cookie。

3

我不認爲這是一個錯誤本身。以下表格認證

  1. 你到服務器
  2. Server驗證的用戶名/密碼,
  3. 如果有效提供用戶名/密碼過程中會發生,然後服務器發送的加密認證票(餅乾)到客戶端到期時間(在web.config表單驗證部分中設置)和用戶名(全部加密)
  4. 在每個需要授權的請求上,cookie會在服務器上解密,檢查到期時間並使用用戶名查看授權(或爲請求的資源獲取該角色)。
  5. 當你註銷,對cookie的到期時間被設定在過去,因此,它不再有效的cookie

現在,至於爲什麼你看到你所看到的...你在註銷之前複製cookie。因此,您複製的cookie從不註冊註銷(移動到期時間)。重新連接時,您仍然有一個有效的身份驗證cookie。現在,如果您的表單身份驗證超時設置爲...比方說20分鐘......如果您複製該cookie並等待21分鐘,則該方法將失敗,該時間已到期。