使用HTTPS时隐藏用户密码

时间:2012-11-15 23:30:34

标签: sql-server security hash https passwords

即使我使用HTTPS,是否应使用hash(密码+ salt)方法在客户端进行密码散列?或者我应该在它到达带有内置函数的SQL SERVER 2008 R2时哈希它?谢谢。

4 个答案:

答案 0 :(得分:1)

为什么你会在客户端散列?这是一个用Javascript编写的单页应用程序吗?即使这样,你必须有一些服务器端语言连接到数据库(ASP.NET?PHP?)。在服务器端进行盐析和散列处理。客户端对我来说闻起来很糟糕......出于某种原因,如果你在客户端发生逻辑和随机生成,盐析/散列程序似乎更容易受到攻击。我不能指出一个特定的攻击 - 但它似乎是一个不必要的东西推向客户端(除非你可能无法获得SSL)。

使用服务器端语言或直接在数据库中执行此操作并不是特别重要。我更喜欢在代码中进行计算,然后将最终的哈希值发送到SQL。使用内置的SQL Server函数很烦人,版本之间存在问题 - 您的代码永远被锁定在Microsoft-land。

TL; DR 是服务器端,而不是客户端,而不是直接在数据库中。如果您希望在发送之前通过线路加密明文密码(肯定应该),则必须使用HTTPS。

答案 1 :(得分:0)

据我所知,如果有人发现安全漏洞并窃取数据库中的密码列表,那么密码的腌制也是有用的。如果盐渍,几乎不可能用彩虹表等方法找回明确的密码。否则,它们就会被破解。

答案 2 :(得分:0)

如果您认为HTTPS已损坏,则会产生许多安全后果。基本上一切都崩溃了。

不要这样做。这是浪费你的时间。以更好的方式使用它,比如开发用户关心的功能。

只需在服务器上执行标准哈希和盐析,尽量不要发明新的安全方案。

答案 3 :(得分:0)

如果您使用SSL,则客户端和服务器之间的通信将被加密。

问题的后半部分有点棘手。虽然SQL Server具有内置加密功能,但它仍然存在可供有权访问数据库的任何人使用的问题。

如果您在代码中加密并将加密版本发送到数据库,它会在数据库受到损害时为您提供保护 - 它们可能已经进入您的数据库,但它们无法解密数据。

所以我的回答是......既不是客户端,也不是数据库 - 在两者之间的代码中加密和加密!