1

选择在 ASP.NET 中的应用程序级别与 SQL CLR 中的数据库级别对用户密码进行哈希处理是否存在任何安全问题?我看到它是双向的。

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

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

4

2 回答 2

2

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

  • 浏览器到应用程序 -> 密码以受 ssl 保护的纯文本形式发送
  • 应用到数据库 -> 密码总是散列

现在你对运行分析器的人没有问题,因为密码是散列的。除此之外,如果有人可以运行分析器,他可能会比读取密码造成更大的破坏......

于 2013-10-31T13:05:31.470 回答
1

由于这些原因,在应用层使用scryptbcrypt进行散列,不要依赖于通用散列算法(MD5、SHA1、SHA512 等)。

以下是scryptbcrypt的 .Net 实现。

于 2013-10-31T13:55:46.077 回答