是否可以将cookie ASP.NET_sessionID标记为安全

时间:2012-08-29 16:03:33

标签: cookies https asp.net-mvc-4 session-state

在进行安全审核后,我得到了将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安全

2 个答案:

答案 0 :(得分:4)

只需编写通过安全审核的代码。

void Session_Start(Object sender, EventArgs e)
    {

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

    }

答案 1 :(得分:3)

这可以让您将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;
    }
}