在ASP.NET

时间:2015-07-14 03:06:17

标签: asp.net vb.net session session-variables

在我们的网站上运行渗透测试后,我们的IT安全部门指出,在用户注销后,我们服务器上的会话ID不会被清除。

我们清除会话的代码如下:

Session.Clear()
Session.RemoveAll()
Session.Abandon()

Dim Cookie1 As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName, "")
Cookie1.Expires = DateTime.Now.AddYears(-1)
Response.Cookies.Add(Cookie1)

Dim Cookie2 As HttpCookie = New HttpCookie("ASP.NET_SessionId", "")
Cookie2.Expires = DateTime.Now.AddYears(-1)
Response.Cookies.Add(Cookie2)

FormsAuthentication.SignOut()
FormsAuthentication.RedirectToLoginPage()

我们通过让UserA登录并根据该登录伪造cookie来确认这一点。在UserA注销后,我们登录UserB并按预期获取存储在UserA的sessionID中的所有会话值。

还有其他方法可以清除会话数据吗?

2 个答案:

答案 0 :(得分:0)

根据MSDNSession.ClearSession.RemoveAll执行相同的操作。在致电Clear之前,您需要致电:

System.Web.Security.FormsAuthentication.SignOut()

答案 1 :(得分:0)

请从Microsoft支持网站查看此综合页面。它明确地涉及您要做的事情。它对会话如何保持机智等有很好的解释。

它使用Login.aspx页面中的逻辑来销毁会话和cookie以克服欺骗。

注意:示例在c#中,但可以很容易地转换为VB。如果您需要帮助,请告诉我。

https://support.microsoft.com/en-us/kb/899918