客户端可以模拟一个cookie
Can client mock a cookie?
我正在使用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会发生什么?
如果他这样做了,他不需要登录(与登录没有密码意义相同)。
有办法吗?
这样做的方法是在cookie中存储用户名和用户名的散列。由于客户端不知道您如何生成哈希(您应该使用加密强方法生成哈希),并且无法生成哈希,因此可以通过检查哈希来验证用户是否是您验证的用户。为了真正安全起见,您可能需要在散列中包含时间戳。
或者您可以在身份验证后加密用户名(或者更常见的是userid)并存储它。这是最常用的方法。
您也可以使用SSL或TLS, cookie将被加密。然而,这并不能阻止客户端只是有人监视客户端。
相关文章:
- 在jQuery AJAX请求后创建一个Cookie
- 创建一个cookie来控制Jquery切换的内容
- 在js中有一个cookie保存序列化的svgs
- 在javascript中为几个页面设置一个cookie
- 如何创建一个 cookie 数组并反转它
- 我只能让一个cookie在javascript中有一个值
- 如何将php数组存储在一个cookie中,然后通过javascript读取它
- 如果我使用另一个域名来提供我的JavaScript,并且该JavaScript设置了一个cookie,那么这算不算第三方
- SoundManager插件暂停它并记住一个cookie
- 我怎么能读取数组我保存在一个cookie与jquery.cookie
- 一个cookie上有多个值
- 如何在JavaScript中编写一个cookie来记住用户名
- 有没有办法为一个请求设置一个cookie ?
- NPM tough-cookie:保存一个cookie,然后转储它
- 创建一个cookie,通过域B中的弹出窗口访问域a
- 客户端可以模拟一个cookie
- 如何创建一个cookie和写入一个数值
- 在RestAngular请求中发送一个Cookie
- 在javascript中写一个cookie
- 设置一个cookie来保存用户的语言选择,并被重定向到所选页面而不是主页