我正在为我的Web应用程序编写一个数据库身份验证系统,这是在ASP.NET MVC中编写的.当有人授权时,应将其用户名保存在cookie中.仅使用HttpResponse.Cookies`来保存其值为用户名的cookie是否安全?难道不是可以伪造的吗?
仅保存用户名...这是正确而安全的方式吗?或者我应该保存整个User对象(如果这实际可能)?
谢谢你,对不起我的英语.
不,保存用户名是非常不安全的,因为它很容易伪造.以下是我的指导方针:
使用令牌.
将令牌存储在数据库中时对其进行哈希处理.
让饼干HttpOnly.
可以由CSPRNG生成令牌,以确保自动登录cookie不会被伪造.
在数据库被泄露的情况下,散列数据库中的令牌可防止用户帐户被盗.(请记住,此时的令牌是密码等效的.)
HTTP-Only cookie可防止可能窃取cookie的XSS攻击.