使用Sql进行密码存储和用户管理

时间:2015-05-23 17:05:23

标签: c# sql

我打算建立一个网站,需要管理用户进入该网站。

我想了解一下用户管理。

问题1

我需要哈希密码,我在考虑Sha256,但Sha512更安全,你认为我应该更安全吗?

问题2

当用户注册到系统时,我在sql中给他一个UserId键,它按顺序排列,1,2,3等等。

登录系统时,用户获取Session["Userid"] =来自sql的号码。 (可以是1,2,555)等等。

这是一种安全的方法吗?

问题3

如果我想要创建一个新的用户详细信息表,那么当用户注册并获得Userid密钥时,我只会在用户详细信息表中添加另一个?

1 个答案:

答案 0 :(得分:0)

回复:问题1

来自OWASP cheat sheet

  

不要担心输出块大小(即SHA-256与SHA-512)。

然而,使用的哈希迭代次数很重要,可以减慢攻击速度。根据OWASP,这将是240k iterations in 2016。请注意将denial of service attacks的最大密码限制为对服务器。

问题2 :不,UserId也难以猜测。如果在您的系统中很容易获得合法的UserId,则攻击者有一个不适当的立足点。我会在这里建议一个Guid。

问题3 :我不完全理解你的问题。但是使用电话/电子邮件验证,蜜罐或Captchas等技术来防止用户大量冷注册到您的系统,否则您最终会耗尽磁盘空间。

然而,大多数.Net网站都面临着用户管理和身份验证的问题,并且之前已经解决了很多次。我建议你在推出自己的实现之前先看看开箱即用的实现: