在ASP.NET中应用程序级别选择散列用户密码与SQL CLR中的数据库级别是否存在安全问题?我看到它有两种方式。
我的想法是,在应用程序级别,密码只从浏览器发送一次到网络服务器。在数据库实现中,密码将再次发送到数据库以进行散列。
在后一种情况下,运行SQL Server Profiler的人将能够看到以明文形式发送到过程或函数的密码。我不太熟悉SQL Server审核,但如果它能够捕获类似的信息,那么它也会带来风险。
答案 0 :(得分:2)
您应该在应用程序中散列密码,而不是在数据库中。这意味着:
现在您对运行探查器的人没有任何问题,因为密码是经过哈希处理的。除此之外,如果有人可以运行一个分析器,他可能会在读取密码后造成更大的伤害......
答案 1 :(得分:1)
使用scrypt或bcrypt在应用程序层中进行哈希处理,因为these reasons而不依赖于通用哈希算法(MD5,SHA1,SHA512等)。