在sql和web应用程序之间安全密码发送的最佳实践?

时间:2013-01-31 11:07:13

标签: c# web-applications passwords security

我有一个关于在C#和SQL之间使用salt进行SHA512散列的问题。存储哈希的最佳方法是什么,我通常可以将它们从网络应用程序保存到数据库中吗?以后在用户登录验证用户时获取它们是否安全?我可以用SQL创建用户和密码,哈希密码和添加盐,然后用c#hash验证用户使用相同的算法去除盐的大小并比较两个哈希值吗?

2 个答案:

答案 0 :(得分:3)

这是一个非常复杂的话题,你应该确保你做对了 - 大多数人都没有。

我见过的最全面的指南是Les Hazlewood的How to Secure Passwords - Developer Best Practices讲话,这是我推荐的一个好的开始。

这里没有人能够在不写短篇小说的情况下回答您的所有问题,因此我只能建议您观看此演讲,注意解释的问题,解决方案,工具和技术,然后找到有关它们的更多信息。

或者您也可以将用户处理外包给正确执行此操作的公司,例如Stormpath。您也可以使用OpenIDBrowserID,根本不关心密码。 (虽然我不建议使用BrowserID,但至少不能直到可以在您自己的服务器上可靠地验证断言。)

答案 1 :(得分:1)

  

存储哈希的最佳方法是什么,我可以正常将它们从网络应用程序保存到数据库中吗?用户登录验证用户后,是否可以安全地获取它们?

如果您正在使用正确的方法,如果您碰巧将所有哈希值转储到pastebin上,则不会发生任何事情;由于盐(最好是胡椒),没有人可以对你的哈希做任何事情(因为他们没有无限的时间和计算能力)。

所以是的,您应该将哈希存储在适当类型的数据库列中。然后在登录时,您重新哈希输入的明文密码并将其与存储在数据库中的密码进行比较。