检索随机生成的会话 ID coockie 名称 asp.net

Retrive randomly generated session id coockie name asp.net

提问人:Hadi Mohammadi 提问时间:2/20/2018 更新时间:2/20/2018 访问量:653

问:

我想用一些随机生成的字符串更改 asp.net cookie 名称,并对其值进行哈希处理。我都做过,但问题是我不知道如何获取“ASP.NET_SessionId并检查哈希值是否有效。目的是防止会话劫持。ASP.NET_SessionId

            app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<Identity.ApplicationUserManager, DatabaseHelper.DatabaseModels.User>(
                    validateInterval: TimeSpan.FromMinutes(15),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            },
            CookieName = Utility.Globals.GenrateRandomString(10),
        });     

这就是我改变“ASP.NET_SessionId”的方式。我还使用以下代码检查哈希值

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        //Check If it is a new session or not , if not then do the further checks
        if (Request.Cookies["ASP.NET_SessionId"] != null && Request.Cookies["ASP.NET_SessionId"].Value != null)
        {
            string newSessionID = Request.Cookies["ASP.NET_SessionID"].Value;
            //Check the valid length of your Generated Session ID
            if (newSessionID.Length <= 24)
            {
                //Log the attack details here
                Response.Cookies["TriedTohack"].Value = "True";
                throw new HttpException("Invalid Request");
            }

            //Genrate Hash key for this User,Browser and machine and match with the Entered NewSessionID
            if (GenerateHashKey() != newSessionID.Substring(24))
            {
                //Log the attack details here
                Response.Cookies["TriedTohack"].Value = "True";
                throw new HttpException("Invalid Request");
            }

            //Use the default one so application will work as usual//ASP.NET_SessionId
            Request.Cookies["ASP.NET_SessionId"].Value = Request.Cookies["ASP.NET_SessionId"].Value.Substring(0, 24);
        }

    } 
c# asp.net asp.net-mvc asp.net-identity 会话 cookie

评论

1赞 NightOwl888 2/20/2018
仅供参考 - 您不能直接修改 cookie。相反,更改 cookie 包括使用新值创建新 cookie,然后将 cookie 发送到浏览器以覆盖客户端上的旧版本。
0赞 trailmax 2/22/2018
会话 cookie 名称还是身份 cookie 名称?这些是不同的。此外,如果将随机字符串作为身份验证的 cookie 名称,则每次应用程序重新启动时,它都会为 cookie 分配一个新名称,并注销所有当前登录的用户。此外,它不会使您免于cookie劫持。你确定这是你想要的吗?

答: 暂无答案