C# 身份验证Cookie

C# 身份验证Cookie,c#,asp.net,asp.net-mvc,authentication,C#,Asp.net,Asp.net Mvc,Authentication,我正在为我的web应用程序编写一个数据库身份验证系统,它是用ASP.NETMVC编写的。当有人授权时,它应该将他的用户名保存在cookies中。使用HttpResponse.Cookies`保存值为username的cookie是否安全?难道这不是可以忘记的吗 仅保存用户名。。。这是正确和安全的方法吗?如果可能的话,我应该保存整个用户对象吗 谢谢你,我的英语很抱歉。不,保存用户名非常不安全,因为它很容易伪造。以下是我的指导方针: 使用代币。 将令牌存储在数据库中时对其进行哈希。 将cookie设

我正在为我的web应用程序编写一个数据库身份验证系统,它是用ASP.NETMVC编写的。当有人授权时,它应该将他的用户名保存在cookies中。使用HttpResponse.Cookies`保存值为username的cookie是否安全?难道这不是可以忘记的吗

仅保存用户名。。。这是正确和安全的方法吗?如果可能的话,我应该保存整个用户对象吗


谢谢你,我的英语很抱歉。

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

使用代币。 将令牌存储在数据库中时对其进行哈希。 将cookie设置为HttpOnly。 CSPRNG可以生成令牌,以确保自动登录cookie不会被伪造

对数据库中的令牌进行散列可以防止在数据库受损的情况下窃取用户帐户。请记住,此时的令牌是密码等价物


仅HTTP cookie可防止可能窃取cookie的XSS攻击。

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

使用代币。 将令牌存储在数据库中时对其进行哈希。 将cookie设置为HttpOnly。 CSPRNG可以生成令牌,以确保自动登录cookie不会被伪造

对数据库中的令牌进行散列可以防止在数据库受损的情况下窃取用户帐户。请记住,此时的令牌是密码等价物


仅HTTP cookie可防止可能窃取cookie的XSS攻击。

如果您将用户名存储在cookie中,则某人很容易更改用户名


更好的方法是将您在cookie中生成的会话id存储起来,并将用户名之类的东西挂在服务器上

如果您将用户名存储在cookie中,那么某人很容易更改用户名


更好的方法是将您在cookie中生成的会话id存储起来,并将用户名之类的东西挂在服务器上

不,将用户名保存在cookie中以标记其授权的用户不是正确的方式,而且绝对不安全

将cookie编辑为其他人的用户名将非常容易,瞧!您现在已被授权为该用户

相反,您应该在cookie中存储一些信息,这些信息不是特定于用户的,而是特定于用户会话的。您可以从浏览器字符串中创建一个值,通过某种方式使其不那么明显,并将该值存储在服务器上的cookie和会话数据中。当用户发送下一个请求时,您可以验证该值是否来自同一会话和同一浏览器配置

它当然不是完全安全的,因为您可以伪造cookie数据和浏览器字符串,但它比将用户名放入cookie中安全得多,而且比仅依赖会话id更安全


要获得真正安全的身份验证,您必须使用SSL。

不,将用户名保存在cookie中以标记其授权的用户不是正确的方式,而且绝对不安全

将cookie编辑为其他人的用户名将非常容易,瞧!您现在已被授权为该用户

相反,您应该在cookie中存储一些信息,这些信息不是特定于用户的,而是特定于用户会话的。您可以从浏览器字符串中创建一个值,通过某种方式使其不那么明显,并将该值存储在服务器上的cookie和会话数据中。当用户发送下一个请求时,您可以验证该值是否来自同一会话和同一浏览器配置

它当然不是完全安全的,因为您可以伪造cookie数据和浏览器字符串,但它比将用户名放入cookie中安全得多,而且比仅依赖会话id更安全


要获得真正安全的身份验证,您必须使用SSL。

使用内置的表单身份验证框架来处理HTTP传输端,避免重新发明轮子


PS:在有人否决投票之前,记住这一点使用SqlMembershipProvider。

使用内置的表单身份验证框架来处理世界末日的HTTP传输,避免重新发明轮子


PS:在有人否决投票之前,记住这一点使用SqlMembershipProvider。

令牌是随机生成的数字或无法猜测的文本。谢谢,但我如何才能制作cookie HttpOnly?cookie['whatever']。HttpOnly=true;令牌是一个随机生成的数字或一段无法猜测的文本。谢谢,但是我如何才能制作一个cookie HttpOnly?cookie['whatever']。HttpOnly=true;会话id及其用户名/用户是否应保存在数据库中?是-因此您可以将会话id用作表中的键
它包含您需要的所有会话相关信息,例如用户。由于您生成了id(可能是GUID的形式),因此有人无法通过修改cookie值来伪造其他用户的会话。会话id及其用户名/用户是否应保存在数据库中?是-因此您可以将会话id用作包含所需所有会话相关信息的表中的键,例如用户。由于您生成了id(可能是GUID的形式),因此无法通过修改cookie值来伪造其他用户的会话。