SMTP 密码以明文形式保存?

你会建议如何保护它呢?

哈希是单向的,无法逆向还原为原始数据。

用户密码之所以被哈希,是因为它们不需要可逆。数据库中的密码哈希仅在用户尝试登录时进行校验。系统将用户提供的密码生成的哈希值与该用户记录中存储的密码哈希进行比对。

像 SMTP 密码和 API 密钥这类信息,通常以明文形式存储。因为它们需要以原始形式传输,如果对其进行哈希处理,将导致无法使用。如果第三方服务接受密码的哈希值,那么以哈希作为保护手段也就失去了意义。

正如 Jay 上面所说,如果你的服务器物理安全遭到破坏,并且 app.yml 文件被访问,那么你需要担心的问题将远比重置 SMTP 密码严重得多。

这里有一个重要的注意事项:你不应该在其它任何地方使用同一个 SMTP 密码。但这并非 Discourse 特有的要求,而是所有系统和每个账户都应遵循的良好安全实践。