【问题标题】:How can I secure a password from the client side? Is it needed or HTTPS/SSL will suffice? [closed]如何从客户端保护密码?是否需要或 HTTPS/SSL 就足够了? [关闭]
【发布时间】:2019-08-18 06:22:14
【问题描述】:

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

【问题讨论】:

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

标签: c# asp.net password-encryption password-hash


【解决方案1】:

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

客户端哈希应该被视为用户的直接哈希 密码。它在服务器上提供的安全性不高于或不低于 如果用户直接给出了他们的密码并且应该受到保护 像这样。 more info...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2012-06-19
    • 2017-02-28
    • 1970-01-01
    • 2017-10-18
    • 2012-08-17
    相关资源
    最近更新 更多