java - 将明文密码*暂时*存储在 MySQL 中是否安全?

标签 java php mysql security phpbb3

一点背景——

我运行一个使用 Java 运行的游戏服务器,以及一个使用 PHP (phpbb) 运行的论坛。我将游戏和论坛账号关联起来,这样在游戏中更改密码会自动更改论坛账号的密码。这两个系统使用不同的密码哈希算法,我需要使用 phpbb 的内置函数在论坛端更新密码哈希,这意味着我必须从 PHP 脚本调用它们(而不是运行我自己的代码)。

为了做到这一点,我决定让 Java 在需要更改密码时通过向 PHP 脚本发出 HTTP 请求来调用 PHP 脚本,以触发 PHP 脚本来完成论坛的密码更改过程帐户。但是,我不想将明文密码放入任何 HTTP 调用中,因为它可能会出现在日志文件和其他可利用区域中。我目前的想法是,当 Java 端更改密码时,它将新的明文密码放入数据库表中,然后发出 HTTP 请求来触发 PHP 脚本,这样 HTTP 请求中就不会出现哈希或敏感信息。 HTTP 调用只会传递要更改的帐户的用户名,以及共享 secret 的 md5 哈希值和用户名,以进行身份​​验证。当 PHP 脚本运行时,它从数据库中检索用户的新明文密码,立即将其删除,然后通过 phpbb 的哈希算法运行明文密码并更新论坛数据库。

在典型情况下,明文密码在被删除之前可能会在数据库中保留不到一秒钟。理想情况下,我根本不会将它存储在任何地方,但是当我无法预测论坛的密码哈希是什么时,我不确定如何将所需的更改从 Java 传达给 PHP,所以我需要以某种方式发送执行散列的 PHP 脚本的明文密码。

关于执行此操作的更好方法的任何想法,或者是否有任何关于在很短的时间内存储明文密码的反馈?我认为 MySQL 登录是安全的,不会与其他人或项目共享。

谢谢!

最佳答案

不要存储明文密码。 如果您的游戏变得流行,它可能会成为黑客不断攻击的目标 特别是如果它包含货币方面(即 - 魔兽世界,travian 和其他人的情况)。 在这种情况下,您需要假设虽然您试图保护您的系统, 有人可能会破解它,并因此获得敏感数据。 您应该使用标准的加密机制来执行此任务(例如,以安全的方式通过 HTTPS 将密码发送到论坛系统)。 我还建议您探索@Joshua Kaiser 的评论 - 单点登录可能是满足您需求的关键, 不要试图在这里重新发明轮子。例如,我可以告诉你我使用 kerberos, Kerberos 有一个票据机制,票据可以在应用程序之间重复使用。不幸的是,我不懂 PHP,也不知道论坛框架如何可插入以使用不同的身份验证模块。

P.S - 我错误地发布了这个答案两次,并尝试按“删除帖子” - 我希望 stackoerflow 能解决这个问题。

关于java - 将明文密码*暂时*存储在 MySQL 中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486126/

相关文章:

java - 关于在自定义日志文件中记录日志错误消息

java.lang.NumberFormatException : Invalid float: "٠"

java - Android 模拟器错误,控制台错误日志重复错误

php - 如何使用包含YouTube视频的PHP发送电子邮件

javascript - 访问 WooCommerce 产品页面中的产品属性选定值

java - 简单二次方程的 JUnit 测试

php - Docker php-fpm-alpine : How to supress warnings

.net - 在 Solaris 上使用 mono 连接到 MySQL

用于简单插入 MySQL 的 PHP PDO 安全程序

mysql - 正确查询以选择 MySQL 中来自 friend 的所有消息