2009-08-24 33 views
5

我有一個使用標準SQL成員資格提供程序的ASP.NET 3.5網站。ASP.NET爲什麼接受外部創建的會話標識符?

應用程序必須先通過IBM Rational AppScan,然後才能生產。

我收到錯誤:
嚴重性:高
測試類型:應用
弱勢網址:http://mytestserver/myapp/login.aspx
整治任務:不接受外部創建的會話標識符

我能做些什麼解決這個問題?

我正在使用SQL成員資格提供程序。這是相關的嗎?我也使用標準登錄控件。我已將「記住我」關閉並隱藏起來。

謝謝。

+0

我想不出任何理由,爲什麼這本來就是壞的?不改變他們檢查它的事實,但我想知道*爲什麼*。 – Thorarin 2009-08-24 17:26:48

回答

8

這不是一個漏洞(我真的不喜歡AppScan,因爲它的假陽性es - 我必須解釋CSRF cookies的次數不需要與我的小型開源項目中的會話相關聯,這讓人很煩惱)。

在這種情況下發生的所有事情都是第一次以會話狀態存儲任何事物並創建一個會話標識符,新的會話將在服務器上打開,其中沒有任何內容。如果你擔心會話固定,那麼你可以在認證後清除cookie。

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

但是使用表單身份驗證,會話中沒有保存身份驗證細節,因此修復不是問題。

坦率地說,如果你必須通過安全掃描沒有任何人評估,如果結果不是誤報,那麼這是一個完全不同的問題。

+0

謝謝。不過,我嘗試了這一點,但IBM Rational AppScan報告了相同的安全錯誤。 – 2009-09-03 13:29:41

+0

雖然這不是一個漏洞,你的解釋是錯誤的。你已經寫下並接受了一個不正確的答案。 – blowdart 2009-09-03 15:33:30

+0

我同意你的意見,但只是說這還不夠。我也不喜歡AppScan工具,但那是我生活的世界。我在每個項目上浪費了一天左右的時間。在他們改變政策之前,我必須忍受它。 – 2009-09-09 13:23:55

0

看起來好像是RegenerateExpiredSessionId屬性正在控制這個。 將其設置爲true。同時保持超時和低值,用戶可以接受的最嚴格(例如10 - 15分鐘)。

+1

謝謝。我試過了,但IBM Rational AppScan每隔幾秒就會觸發一次該網站。將值降低到10分鐘不起作用。 – 2009-09-03 13:31:27

相關問題