我知道密码可以以明文形式出现在日志中的原因有很多-例如,我在调试日志的上下文中以某种频率提到了这一点-但我想知道是否有人可以解释假设Web应用程序对用户提交的密码进行哈希处理并将哈希值与站点操作员存储的哈希值进行比较,则此方法的工作原理很详细。
例如,假设用户访问一个网站,输入用户名和密码,然后单击提交。我本以为密码会立即进行哈希处理(比方说使用bcrypt),然后将其与数据库中与输入的用户名关联的哈希进行比较。那么,纯文本密码如何以日志结尾?输入的密码会在散列发生之前以某种方式记录下来吗?如果是这样,那是安全性失败吗?
答案 0 :(得分:1)
密码通常是哈希的服务器端,而不是在客户端。如果密码是在GET请求中发送的,它将在日志中以纯文本结尾。
为防止密码最终出现在日志文件中,应使用POST请求。
要保护密码免受中间人攻击,应该仅通过加密的HTTPS / SSL连接传递密码。客户端哈希不能保护密码,因为中间人可以简单地剥离执行哈希的脚本。