客户端可以模拟cookie吗?

时间:2015-08-17 17:23:00

标签: javascript asp.net cookies

我正在使用ASP.NET并在服务器上创建一个cookie,如下所示:

public void LoginCookie(string id, string name, string loc)
        {
            HttpCookie cookie = new HttpCookie("login");

            cookie["name"] = HttpContext.Current.Server.UrlEncode(name); // user name
            cookie["avatar"] = loc; // user avatar location
            cookie["accountId"] = id; // user id
            cookie.Expires = DateTime.Now.AddDays(180); // default expiring

            HttpContext.Current.Response.Cookies.Add(cookie);
        }

以下是检查用户是否登录的代码:

if (Request.Cookies["login"] != null)
{
   // login successful
}

我的麻烦是:任何客户都可以轻松查看cookie值。那么,如果他嘲笑一个名为login且值name, avatar, accountId的新Cookie,会发生什么?

如果他这样做,他就不需要登录(与没有密码的登录相同的意思)。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是在cookie中存储用户名和用户名的哈希值。由于客户端不知道如何生成散列(并且您应该使用加密强大的方法生成)并且无法生成散列,因此您可以通过检查散列来验证用户是您通过身份验证的用户。为了非常安全,您可能希望在哈希中包含时间戳。

或者您可以在身份验证后加密用户名(或更常见的用户ID)并存储它。这是最常用的方法。

您也可以使用SSL或TLS,并且cookie将被加密。但是,这并不能阻止客户只是在监视客户端。