2012-08-29 42 views
3

安全审核我设置cookie ASP.NET_sessionID为“安全”的要求后。是否有可能以纪念饼干ASP.NET_sessionID为安全

眼下标志未设置。

我可以使用SessionIDManager将其设置为安全?我已经在使用本码登录后更改会话cookie的值:

  System.Web.SessionState.SessionIDManager manager = new System.Web.SessionState.SessionIDManager(); 
      string oldId = manager.GetSessionID(System.Web.HttpContext.Current); 
      string newId = manager.CreateSessionID(System.Web.HttpContext.Current); 
      bool isAdd = false, isRedir = false; 
      manager.SaveSessionID(System.Web.HttpContext.Current, newId, out isRedir, out isAdd); 

编辑

我看到了,我可以设置

<httpCookies httpOnlyCookies="false" requireSSL="true" /> 

但只有我想拥有这一个cookie的安全

回答

4

这应该让你设置cookie为安全:

void Application_EndRequest(object sender, EventArgs e) 
{ 
    var sessionCookieKey = Response.Cookies.AllKeys.SingleOrDefault(c => c.ToLower() == "asp.net_sessionid"); 
    var sessionCookie = Response.Cookies.Get(sessionCookieKey); 
    if(sessionCookie != null) 
    { 
     sessionCookie.Secure = true; 
    } 
} 
+0

'Application_EndRequest'在哪里?我的'Global.asax'只有'Session_End'和'Application_End'。 – Blaise

+0

只需将其添加到您的Global.asax文件,你应该是好去 – martin308

+0

不能编译。无法解析符号安全。 –

3

只需编写通过安全审计的代码即可。

void Session_Start(Object sender, EventArgs e) 
    { 

     if (Request.IsSecureConnection) 
      { 
       Response.Cookies["ASP.NET_SessionId"].Secure = true; 
      } 

    }