首页 文章

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

提问于
浏览
7

一点点背景 -

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

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

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

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

谢谢!

3 回答

  • 0

    这取决于您使用Java而不是PHP的数据库 . 在PHP中使用PDO连接到不同的数据库并操纵数据 . 您可以尝试简单地将一个DB作为主密码存储,另一个作为salve - 取决于反向加密 .

    将PHP(例如)PDO文本密码直接导入临时字段中的Java数据库 - 当然特定于用户 - 然后告诉PHP触发Java函数来读取该列,哈希,更新正确的列并删除温度场 .

    如果操作正确,您可以将漏洞的时间范围限制在几毫秒 .

  • 0

    加密就是这样 .

    • 加密连接:HTTPS的同义词 . 如果您的服务器支持,请使用HTTPS将数据传递给phpbb .

    • 加密数据:加密密码并以某种方式存储密钥(非常不安全),或使用非对称加密 . 请参阅my question的答案,以便深入了解如何通过安全通道发送密码 .

  • 3

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

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

相关问题