hash - 日志中的明文密码

标签 hash passwords bcrypt

我知道密码最终会以明文形式出现在日志中的原因有很多——例如,我在调试日志的上下文中经常看到这一点——但我想知道是否有人可以解释这是如何工作的机制假设一个网络应用程序对用户提交的密码进行哈希处理,并将该哈希值与网站运营商存储的密码进行比较。

例如,假设用户访问一个网站,输入用户名和密码,然后点击提交。我会假设密码会立即被散列(比如使用 bcrypt)并与数据库中输入的用户名关联的散列进行比较。那么,明文密码如何最终出现在日志中呢?在进行散列之前,输入的密码是否会以某种方式被记录下来?如果是这样,那是安全故障吗?

最佳答案

密码通常在服务器端进行哈希处理,而不是在客户端。如果密码将在 GET 请求中发送,它将在日志中以纯文本形式结束。

为了防止密码最终出现在日志文件中,应该使用 POST 请求。

为保护密码免受中间人攻击,密码应仅通过加密的 HTTPS/SSL 连接传递。客户端哈希不会保护密码,因为中间人可以简单地剥离执行哈希的脚本。

关于hash - 日志中的明文密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523422/

相关文章:

perl - 根据第一列查找两个大文件之间的异同

java - 为什么 Guava 布隆过滤器的性能这么差?

sql-server - Windows Azure SQL 数据库创建登录 - 过期策略?

html - 我们如何检查发送到电子邮件客户端的数据是否加密?

java - 从多个输入字符串生成确定性唯一固定长度文件名字符串

c - 32 位校验和算法比 CRC32 质量更好?

unicode - 散列时哪种 Unicode 规范化(和其他处理)适合密码?

ruby-on-rails - 存储 Web 服务密码的最佳实践

node.js - 将 BCrypt 与 Sequelize 模型一起使用

ruby-on-rails-3 - 任何rails命令都给noexec.rb :75:in `setup' : undefined method `name'