因为听说竟然有人能通过目前的SessionID算出接下来的SessionID,所以重写一下,防止Session攻击
StringFormat 类没用返回什么都行,这里我变成了base64编码
Common.SessionIdOverride
{
public class SessionIdOverride : System.Web.SessionState.SessionIDManager
{
public SessionIdOverride()
{
//
// TODO: Add constructor logic here
//
}
public override string CreateSessionID(HttpContext context)
{
string sessionString = Guid.NewGuid().ToString() + context.Request.UserHostAddress;
Tools.StringFormat.StringFormat sf = new Tools.StringFormat.StringFormat();
return sf.ToBase64Str(sessionString);
}
}
}
webconfig
页面重置Session
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
在这里有个奇怪的地方,重写机制我可能没有完全明白,是这样的现象
当重写SessionID时写上这个Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
SessionID确实变成空了,但是如果不重写SessionID写上这个SessionID还是存在的?留待以后解决