gpt4 book ai didi

security - 客户端密码哈希与纯文本

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:01 26 4
gpt4 key购买 nike

我正在组装一个 android 客户端(可能在未来的 iOS、门户网站等)和 php mysql 服务器。服务器端我目前正在使用 PHPass 库对传入的密码进行哈希和加盐。

我应该让客户端通过 HTTPS/SSL 发送纯文本密码,还是客户端应该先进行某种形式的哈希处理。例如,每个客户端是否应该简单地对每个传出密码进行 sha1(或其他算法)?

最佳答案

大多数网站将通过加密连接 SSL/HTTPS 发送纯文本密码。可以在客户端对密码进行哈希处理,但优势很小,而且客户端语言(JavaScrypt)通常很慢,因此您可以同时计算较少的轮数,这会削弱哈希值。在每种情况下,服务器都必须计算哈希值以确保安全。

优势很小,因为如果攻击者可以进行 ManInTheMiddle 攻击,他还可以修改/删除进行哈希处理的脚本 (JS)。只有使用 SSL/HTTPS 的加密连接才能防止 MITM 攻击,因此您无论如何都需要 SSL。

在您使用应用的情况下,它看起来略有不同。由于用户首先必须安装您的软件,因此无需向客户端发送脚本,因此 MITM 无法修改此脚本。此外,应用程序可以相对快速地计算哈希值(如果它可以运行 native 代码),因此可以在客户端进行足够的轮次。

这就是我要做的:

  1. 为了方便起见,通过加密的 SSL/HTTPS 连接发送纯文本密码并计算慢速 BCrypt 哈希服务器端,就像您现在所做的那样。
  2. 只有当服务器上的负载变得太重时,您才可以将慢速 BCrypt 哈希的计算移至客户端应用程序。仍然使用 HTTPS 发送哈希,然后在服务器上计算额外的快速哈希(例如 SHA-256)。这比较复杂,因为您必须单独交换和存储盐。

关于security - 客户端密码哈希与纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33162306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com