Cookies 我应该如何管理用户名/密码会话信息?

Cookies 我应该如何管理用户名/密码会话信息?,cookies,Cookies,我有一个网站,其基本要点如中所述,我希望在用户使用该网站(即上传和下载数据)时,能够以某种方式一致地存储用户名和有关用户的一些信息 现在,如果成功登录,我将返回密码的哈希值以及任何相关信息。每当用户尝试某项操作时,其用户名、哈希等必须与数据库中的内容匹配。如果用户注销,其本地Sinatra会话将刷新所有信息 我意识到这是一种非常幼稚的方法。有没有更好的方法来处理用户会话信息?cookies上的wikipedia条目提到使用会话uid而不是其他信息;这种方法的优点是什么?我怀疑这种方法也容易受到其

我有一个网站,其基本要点如中所述,我希望在用户使用该网站(即上传和下载数据)时,能够以某种方式一致地存储用户名和有关用户的一些信息

现在,如果成功登录,我将返回密码的哈希值以及任何相关信息。每当用户尝试某项操作时,其用户名、哈希等必须与数据库中的内容匹配。如果用户注销,其本地Sinatra会话将刷新所有信息

我意识到这是一种非常幼稚的方法。有没有更好的方法来处理用户会话信息?cookies上的wikipedia条目提到使用会话uid而不是其他信息;这种方法的优点是什么?我怀疑这种方法也容易受到其他攻击,但由于我验证了所做的一切,所以我不确定自己会面临什么样的攻击


此外,如果/当我实现ssl时,这些事务是否会被“自动”加密,或者如果需要,我是否需要做其他事情来确保字符串受到保护?

这实际上是一个非常复杂的问题。举个例子,你有帐户锁定的问题:如果你基于失败的尝试而锁定,攻击者对你的网站进行DOS攻击有多容易

我将列出一些最佳实践来帮助您开始:

将密码与用户名和用户ID一起存储,并加上盐和哈希。你也应该把盐放在土豆条旁边

不允许频繁的错误密码尝试。每几秒钟不止一次

如果任何给定用户或任何给定IP地址的尝试失败超过每分钟3次,则需要某种形式的人工验证,如验证码。这允许您防止完全拒绝服务攻击

如果实施自动登录系统,请使用令牌身份验证系统

对于令牌身份验证系统,使用安全的随机数生成器,将普通令牌发送给用户,但在数据库中对令牌进行加密和散列

如果可能,请使用TLS/SSL,但一旦数据脱离网络,就不要依赖它们的安全性


这实际上是一个非常复杂的问题。举个例子,你有帐户锁定的问题:如果你基于失败的尝试而锁定,攻击者对你的网站进行DOS攻击有多容易

我将列出一些最佳实践来帮助您开始:

将密码与用户名和用户ID一起存储,并加上盐和哈希。你也应该把盐放在土豆条旁边

不允许频繁的错误密码尝试。每几秒钟不止一次

如果任何给定用户或任何给定IP地址的尝试失败超过每分钟3次,则需要某种形式的人工验证,如验证码。这允许您防止完全拒绝服务攻击

如果实施自动登录系统,请使用令牌身份验证系统

对于令牌身份验证系统,使用安全的随机数生成器,将普通令牌发送给用户,但在数据库中对令牌进行加密和散列

如果可能,请使用TLS/SSL,但一旦数据脱离网络,就不要依赖它们的安全性


如果你的网站是在asp.net中建立的,那么你可以使用.net证券。。这真的很好。您还可以在其中使用principle类,使其更加安全。

如果您的网站是在asp.net中构建的,那么您可以使用dot net安全性。。这真的很好。您还可以在其中使用principle类来提高安全性。

什么是良好的起始盐值?例如,我应该让我的数据库根据当前系统时间生成一个随机数,对密码散列加盐,然后将其作为会话散列返回吗?下次用户登录时,salt是不同的,因此散列是不同的,但它对于特定登录是持久的?请使用安全的随机数生成器,如.NET中的RNGCryptoServiceProvider。您可以安全地将盐存储在数据库中,alnong侧边是已知的散列。什么是良好的起始盐值?例如,我应该让我的数据库根据当前系统时间生成一个随机数,对密码散列加盐,然后将其作为会话散列返回吗?下次用户登录时,salt是不同的,因此散列是不同的,但它对于特定登录是持久的?请使用安全的随机数生成器,如.NET中的RNGCryptoServiceProvider。您可以安全地将盐存储在数据库中,alnong侧边是已知的哈希。我使用的是Sinatra和ruby,但这对其他asp.net开发人员来说是一个很好的提示。谢谢。我正在使用Sinatra和ruby,但这对其他asp.net开发人员来说是一个很好的提示。谢谢你。