【发布时间】:2012-11-09 06:47:30
【问题描述】:
一点背景——
我运行一个在 Java 中运行的游戏服务器,以及一个在 PHP (phpbb) 中运行的论坛。我把游戏和论坛账号绑定了,所以在游戏中修改密码会自动修改论坛账号的密码。两个系统使用不同的密码散列算法,我需要使用phpbb的内置函数更新论坛端的密码散列,这意味着我必须从PHP脚本调用它们(而不是运行我自己的代码)。
为了做到这一点,我决定让 Java 通过在需要更改密码时向 PHP 脚本发出 HTTP 请求来调用 PHP 脚本,以触发 PHP 脚本来完成论坛的密码更改过程帐户。但是,我不想将明文密码放在任何 HTTP 调用中,因为它可能会出现在日志文件和其他可利用的区域中。我目前的想法是,Java端在修改密码时,将新的明文密码放入数据库表中,然后发出HTTP请求以触发PHP脚本,这样HTTP请求中就不会出现散列或敏感信息。 HTTP 调用只会传递要更改的帐户的用户名,以及共享密钥的 md5 哈希加上用户名,以进行身份验证。 PHP脚本运行时,从数据库中检索用户新的明文密码,立即删除,然后通过phpbb的哈希算法运行明文密码并更新论坛数据库。
在典型情况下,明文密码在被删除之前可能会在数据库中保存不到一秒钟。理想情况下,我根本不会将它存储在任何地方,但是当我无法预测论坛的密码哈希将是什么时,我不确定如何将所需的更改从 Java 传递到 PHP,因此我需要以某种方式发送执行散列的 PHP 脚本的明文密码。
关于更好的方法的任何想法,或者是否有任何关于在很短的时间内存储明文密码的反馈?我认为 MySQL 登录是安全的,不会与其他人或项目共享。
谢谢!
【问题讨论】:
-
您能否在将其存储到数据库之前从 Java 对其进行加密,并在您从数据库中读取它之后立即从 PHP 对其进行解密?
-
加密是一个不错的主意,因为显然你已经有了一个共享的秘密。只通过 HTTPS 和 POST 将用户名和明文密码发送给 PHP 怎么样,比如表单数据?
-
更好的是,为 PHP BB wiki.phpbb.com/Authentication_plugins 创建一个自定义身份验证插件这支持自定义密码身份验证方案,如果适用,应该允许您利用单点登录。
-
让两个应用程序使用相同的散列算法不是更容易吗?管理起来会更容易,不会遇到这样的问题。
-
您可以更改您的 Java 游戏以使用与论坛相同的哈希算法...
标签: java php mysql security phpbb3