是否有选择哈希在ASP.NET应用水平与在SQL CLR数据库级别的用户密码的安全问题? 我看到了这两种方式。
我的想法是,在应用层面上,密码只有从浏览器向Web服务器发送一次。 在数据库实现,密码发送第二次到数据库的散列。
在后一种情况下,有人运行SQL Server事件探查器将能够看到发送到明文的过程或函数的密码。 我不是太熟悉SQL Server的审计,但是如果不得不捕获类似的信息的能力,它会带来风险为好。
是否有选择哈希在ASP.NET应用水平与在SQL CLR数据库级别的用户密码的安全问题? 我看到了这两种方式。
我的想法是,在应用层面上,密码只有从浏览器向Web服务器发送一次。 在数据库实现,密码发送第二次到数据库的散列。
在后一种情况下,有人运行SQL Server事件探查器将能够看到发送到明文的过程或函数的密码。 我不是太熟悉SQL Server的审计,但是如果不得不捕获类似的信息的能力,它会带来风险为好。
你应该在你的应用程序散列密码,而不是在你的数据库。 这意味着:
现在你有一个人跑一个分析器,因为密码被散列没有问题。 此外,如果有人可以运行探查,他大概可以做更多的伤害,然后读取密码...
散列在使用所述应用层scrypt或bcrypt ,不依赖于通用的散列算法(MD5,SHA1,SHA512,等)的,因为这些原因 。
以下是.NET实现scrypt和bcrypt 。