在ASP.NET与SQL CLR中散列Web用户密码

时间:2013-10-31 12:31:19

标签: asp.net sql-server sqlclr

在ASP.NET中应用程序级别选择散列用户密码与SQL CLR中的数据库级别是否存在安全问题?我看到它有两种方式。

我的想法是,在应用程序级别,密码只从浏览器发送一次到网络服务器。在数据库实现中,密码将再次发送到数据库以进行散列。

在后一种情况下,运行SQL Server Profiler的人将能够看到以明文形式发送到过程或函数的密码。我不太熟悉SQL Server审核,但如果它能够捕获类似的信息,那么它也会带来风险。

2 个答案:

答案 0 :(得分:2)

您应该在应用程序中散列密码,而不是在数据库中。这意味着:

  • 浏览器到应用程序 - >密码以ssl保护的纯文本发送
  • 应用程序到数据库 - >密码是allways hashed

现在您对运行探查器的人没有任何问题,因为密码是经过哈希处理的。除此之外,如果有人可以运行一个分析器,他可能会在读取密码后造成更大的伤害......

答案 1 :(得分:1)

使用scryptbcrypt在应用程序层中进行哈希处理,因为these reasons而不依赖于通用哈希算法(MD5,SHA1,SHA512等)。

以下是scryptbcrypt的.Net实施。