在我们的网站上运行渗透测试后,我们的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中的所有会话值。
还有其他方法可以清除会话数据吗?
答案 0 :(得分:0)
根据MSDN,Session.Clear
和Session.RemoveAll
执行相同的操作。在致电Clear
之前,您需要致电:
System.Web.Security.FormsAuthentication.SignOut()
答案 1 :(得分:0)
请从Microsoft支持网站查看此综合页面。它明确地涉及您要做的事情。它对会话如何保持机智等有很好的解释。
它使用Login.aspx页面中的逻辑来销毁会话和cookie以克服欺骗。
注意:示例在c#中,但可以很容易地转换为VB。如果您需要帮助,请告诉我。