2013-10-16 163 views
1

我們有一個運行在IIS7中的ASP.Net Web站點項目,它使用站點地圖進行菜單導航,展示了一個我以前從未見過的無cookie的行爲。Cookieless SiteMap安全漏洞?

當無cookie用戶登錄到網站時,他們會遇到預期的導航問題,導致不包含其會話ID的鏈接因此導致它們丟失會話上下文。這部分似乎很好理解,雖然我們可以手動處理,但所有用戶都希望因其他原因啓用Cookie(這裏的用戶基數很小),並提供無Cookie支持是一項低優先級。

我們現在已經能夠重現的更令人不安的行爲是當用戶在應用程序池回收後點擊該網站時,如果該用戶禁用了Cookie,他們將收到預期的無Cookie URL和行爲,但所有其他現在啓用Cookie的用戶將獲得包含該第一個用戶的會話ID的站點地圖創建鏈接。這意味着無cookie用戶A登錄,啓用cookie的用戶B登錄,用戶B單擊鏈接,並且由於該鏈接包含用戶A的會話ID,因此他們現在可以在用戶A的會話中有效地看到他們的數據,等等。這種行爲一直存在,直到網站被回收。

Web配置具有Cookieless設置爲自動檢測,並且應用程序池回收處於29小時的默認回收期。

我將開始尋找解決方案中奇怪的請求處理程序和其他錯誤的自定義添加項,但粗略觀察並沒有讓我認爲我們看到了默認站點地圖行爲以外的任何其他內容。

我在這裏的問題是:

  • 這是一個已經記錄了已知的bug或東西嗎?
  • 站點地圖解析鏈接緩存不知何故?
  • 我沒有看到任何對站點地圖URLS進行編程式操作,但有沒有一種方法可以從站點地圖中調試到實際的URL生成,以查看它是如何以及爲什麼將cookie中的會話ID包含在啓用cookie的響應中用戶?

有關如何進一步跟蹤此任何建議將不勝感激。

+0

它不會讓我感到驚訝,如果它是一個錯誤,但我沒有來源來驗證雅或不。我在IIS和應用程序池回收方面遇到了很多問題。我最近的問題是IIS在銷燬回收站上的本地用戶環境證書,導致我們無法連接到某些服務器,除非我們明確指定了它已在運行的帳戶的用戶名和密碼.... – ohmusama

回答

0

一旦我們確認這是與網站地圖鏈接有關,它縮小了我們的搜索範圍,我們發現這"FIX: ASP.NET 4 SiteMapProvider URLs Incorrect in Cookieless Mode"

發生此問題是因爲導航控件是第一次數據綁定時,SiteMapProvider對象的URL表生成。那麼URL表格被緩存以備將來使用在以後的請求 - http://support.microsoft.com/kb/2472263

在我們的情況下,我們看到的是直接相關的知識庫文章中描述的問題,並應用此修補程序解決了問題的行爲。