验证Cookie

Alo*_*kin 1 c# asp.net authentication asp.net-mvc

我正在为我的Web应用程序编写一个数据库身份验证系统,这是在ASP.NET MVC中编写的.当有人授权时,应将其用户名保存在cookie中.仅使用HttpResponse.Cookies`来保存其值为用户名的cookie是否安全?难道不是可以伪造的吗?

仅保存用户名...这是正确而安全的方式吗?或者我应该保存整个User对象(如果这实际可能)?

谢谢你,对不起我的英语.

Joh*_*zen 5

不,保存用户名是非常不安全的,因为它很容易伪造.以下是我的指导方针:

  1. 使用令牌.
  2. 将令牌存储在数据库中时对其进行哈希处理.
  3. 让饼干HttpOnly.

可以由CSPRNG生成令牌,以确保自动登录cookie不会被伪造.

在数据库被泄露的情况下,散列数据库中的令牌可防止用户帐户被盗.(请记住,此时的令牌是密码等效的.)

HTTP-Only cookie可防止可能窃取cookie的XSS攻击.