你害怕的是绝对可能的。但是,它不应该成为一个问题。让我解释:
MySQL目前使用许多不同类型的日志:
因此,数据通常至少写入一个日志文件,但可能写入3个(取决于服务器配置)。
但它也被写入磁盘。它以合理的纯文本格式存储在表空间中。因此,如果我(作为攻击者)可以访问磁盘,我将跳过日志并直接获取表信息本身。
现在,如果您正在“散列”数据库层中的密码(意味着明文密码进入查询,并且数据库发出散列函数),那么您是正确的,日志可能会产生纯文本密码。
通过刷新日志来隐藏此信息是不值得的。最好从源代码修复问题(在应用程序中使用更好的散列方法)。
问题是MySQL使用的任何哈希都是一个简单的原始哈希(例如 MD5() 要么 SHA256() )。两者都是为了设计的 快速 。因此,如果我可以从表中获取哈希值,我可以使用原始密码轻松攻击它。为什么?因为快速的哈希很容易暴力 使用GPU 。
MD5()
SHA256()
基本上,你必须做两件事(至少从我的角度来看):