【发布时间】:2015-10-02 12:27:07
【问题描述】:
在我们的网站上运行渗透测试后,我们的 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 中的所有会话值。
还有其他方法可以清除会话数据吗?
【问题讨论】:
-
您是否尝试在清除并放弃会话之前退出?会话将继续存在,直到您的请求完成。因此,如果注销在会话中设置了某些内容,它可能会再次被激活?
-
是的。我已经尝试在清除会话之前放置 formsauthentication.signout
标签: asp.net vb.net session session-variables