Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用HTTPS时散列用户密码_Sql Server_Security_Hash_Https_Passwords - Fatal编程技术网

Sql server 使用HTTPS时散列用户密码

Sql server 使用HTTPS时散列用户密码,sql-server,security,hash,https,passwords,Sql Server,Security,Hash,Https,Passwords,即使我使用的是HTTPS,是否应该在客户端使用哈希(password+salt)方法对密码进行哈希?或者,当它到达带有内置函数的SQLServer2008R2时,我应该对它进行散列吗?谢谢。据我所知,如果有人发现安全漏洞并从数据库中窃取了密码列表,那么密码加密(也)很有用。如果是咸的,几乎不可能用彩虹表之类的方法找到清晰的密码。否则,它们可能会被破解。为什么要在客户端进行哈希运算?这是用Javascript编写的单页应用程序吗?即使这样,您也必须有一些服务器端语言连接到数据库(ASP.NET?P

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

据我所知,如果有人发现安全漏洞并从数据库中窃取了密码列表,那么密码加密(也)很有用。如果是咸的,几乎不可能用彩虹表之类的方法找到清晰的密码。否则,它们可能会被破解。

为什么要在客户端进行哈希运算?这是用Javascript编写的单页应用程序吗?即使这样,您也必须有一些服务器端语言连接到数据库(ASP.NET?PHP?)。在服务器端进行盐析和散列。客户端对我来说很难闻。。。出于某种原因,如果在客户端有逻辑和随机生成,那么satting/hash过程似乎更容易受到攻击。我不能指出具体的攻击——但似乎没有必要将其推送到客户端(除非您可能无法获得SSL)

无论是使用服务器端语言还是直接在数据库中执行,这都不是特别重要。我更喜欢在代码中进行计算,然后将最后的散列发送到SQL。使用内置的SQL Server函数很烦人,而且版本之间也存在问题,而且您的代码永远被锁定在Microsoft land中


TL;DR在服务器端执行,而不是客户端,也不是直接在数据库中执行。如果您希望在发送前通过线路对明文密码进行加密(当然应该),则HTTPS是必需的。

如果您假定HTTPS已被破坏,则会产生许多安全后果。基本上,一切都会分崩离析

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


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

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

问题的后半部分略显棘手。虽然SQL Server具有内置的加密功能,但它面临着任何有权访问数据库的人都可以使用的问题

如果您使用代码加密并将加密版本发送到数据库,则在数据库受损的情况下,它会为您提供保护—他们可能已侵入您的数据库,但无法解密数据


所以我的答案是。。。既不是客户端,也不是数据库-加密和盐在代码中介于两者之间

我可以想象,它通过发送一个经过哈希和盐渍处理的密码(而不是明文)增加了另一层保护。比如,如果用户决定拦截Javascript,而不是将未经盐渍的密码发送到数据库,或者谁知道他们可以发送什么。我同意Mike在客户端的观点——如果有人禁用了JavaScript怎么办——根本没有加密?我对不使用数据库有更强烈的感觉——这也让我得出了和迈克一样的结论。在服务器端代码中执行此操作。