2012-06-03 113 views
6

我使用窗體身份驗證是ASP.NET。我正在針對學校項目進行深入測試。我正在使用LENS -ASP.NET PENETRATING TESTING TOOL。在結果中,它告訴我,我的申請可能會受到會話固定的影響。有誰知道這可以減輕對抗?會話固定 - 窗體身份驗證

由於

回答

11

會話固定是其中一個人注視另一個人的會話標識符(SID)的攻擊。

攻擊開始與攻擊者訪問該網站,並建立一個有效的會話,當應用程序提供包含會話ID cookie中,攻擊者已經固定,或鎖定中,已知良好的會話。然後攻擊者將誘騙受害者使用此會話ID。此時攻擊者和受害者共享相同的會話ID。現在,無論何時存儲在此固定會話中的信息都用於爲受害者做出決定或僅顯示受害者應該看到的信息,這些信息可能被攻擊者潛在使用和查看!你可以read more here

這個唯一的解決方法將是ASP.NET到問題的任何成功驗證後一個新的會話ID,這樣,一旦被害人登錄,攻擊者必須將會議的訪問權限。還有一點要記住:中從來沒有實現會話,直到用戶登錄

記住,在ASP.net Session.Abandon()不足以完成這個任務,它不會從用戶的瀏覽器中刪除會話ID的Cookie,所以任何新在會話被放棄之後,對同一個應用程序的請求將使用相同的會話ID和新的會話狀態實例! As Microsoft states here。你需要放棄會話清晰的會話ID的Cookie:

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

這也是一個很好的做法,以改變窗體身份驗證cookie名稱,在web.config文件:

<authentication mode="Forms"> 
    <forms name=".CookieName" loginUrl="LoginPage.aspx" /> 
</authentication> 

這裏有一個很好的文章在Session Attacks and ASP.NET以及如何解決它。