我知道密码最终会以明文形式出现在日志中的原因有很多——例如,我在调试日志的上下文中经常看到这一点——但我想知道是否有人可以解释这是如何工作的机制假设一个网络应用程序对用户提交的密码进行哈希处理,并将该哈希值与网站运营商存储的密码进行比较。
例如,假设用户访问一个网站,输入用户名和密码,然后点击提交。我会假设密码会立即被散列(比如使用 bcrypt)并与数据库中输入的用户名关联的散列进行比较。那么,明文密码如何最终出现在日志中呢?在进行散列之前,输入的密码是否会以某种方式被记录下来?如果是这样,那是安全故障吗?
最佳答案
密码通常在服务器端进行哈希处理,而不是在客户端。如果密码将在 GET 请求中发送,它将在日志中以纯文本形式结束。
为了防止密码最终出现在日志文件中,应该使用 POST 请求。
为保护密码免受中间人攻击,密码应仅通过加密的 HTTPS/SSL 连接传递。客户端哈希不会保护密码,因为中间人可以简单地剥离执行哈希的脚本。
关于hash - 日志中的明文密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523422/