Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
C# 如何从客户端保护密码?是需要还是HTTPS/SSL就足够了?_C#_Asp.net_Password Encryption_Password Hash - Fatal编程技术网

C# 如何从客户端保护密码?是需要还是HTTPS/SSL就足够了?

C# 如何从客户端保护密码?是需要还是HTTPS/SSL就足够了?,c#,asp.net,password-encryption,password-hash,C#,Asp.net,Password Encryption,Password Hash,我在服务器端使用加密在数据库中存储密码。我关心的是客户端。我是否需要使用任何加密技术或HTTPS/SSL就足够了?我想说一个有效的SSL证书就足够了 客户端散列应该被视为用户的直接散列 密码。它在服务器上提供的安全性不比 如果用户直接提供了密码,则应受到保护 像这样的 @dedecos但如果您在客户机上这样做,您的哈希密码将成为您的密码。@dedecos但如果有人能够嗅探网络,而TLS对此没有帮助(即,他们在目标计算机上安装了自己的根证书),然后他们还可以执行MITM攻击,这样服务的页面就不再

我在服务器端使用加密在数据库中存储密码。我关心的是客户端。我是否需要使用任何加密技术或HTTPS/SSL就足够了?

我想说一个有效的SSL证书就足够了

客户端散列应该被视为用户的直接散列 密码。它在服务器上提供的安全性不比 如果用户直接提供了密码,则应受到保护 像这样的


@dedecos但如果您在客户机上这样做,您的哈希密码将成为您的密码。@dedecos但如果有人能够嗅探网络,而TLS对此没有帮助(即,他们在目标计算机上安装了自己的根证书),然后他们还可以执行MITM攻击,这样服务的页面就不再散列密码,而只接收原始密码。而且,如果服务器没有进一步散列密码(例如,作为PBKDF散列的另一次迭代,使用不同的盐),那么如果有人破坏数据库,他们可以使用几乎没有修改过的客户端访问系统中的任何帐户。@dedeecos在服务器端散列密码(并正确地散列密码)的好处如果有人以某种方式转储了您的数据库,他们a)不知道用户的纯文本密码是什么(这将授予他们访问您站点上的帐户,以及用户重复使用电子邮件/用户名和密码组合的任何站点的权限),b)他们无法判断任何两个用户是否具有相同的密码。在客户端散列场景中,受损数据库将拥有作为受害者登录服务所需的所有信息。@dedecos这是我现在100%的看法,但前提是服务器正确散列密码等,并且客户端/服务器连接具有TLS(并且使用Let'sEncrypt,没有理由不这样做),在客户端散列密码几乎没有什么好处。考虑到Javascript本机不提供哈希方法,这意味着您的网站空间必须更大才能支持它。