使用Java在PHP中使用password_hash验证密码哈希值

时间:2015-03-30 09:08:31

标签: java php hash password-hash php-password-hash

我有一个基于PHP的Web应用程序,它将HTTP请求发送到Java Web Service,后者又执行Oracle数据库中请求的操作。我希望在HTTP请求中发送密码之前使用password_hash来哈希密码。如果我在创建新用户时这样做,那就没有问题了。但是,当我需要使用此密码登录时,我无法在PHP中验证它,因为我没有(也不能)直接访问数据库以便能够获取存储在那里的哈希。因此验证必须在Java Web Service中。这是可能的,如果没有,有什么替代方案?使用的盐是随机的,所以我不能哈希用于登录的密码并发送它,因为我没有用于存储在数据库中的哈希的盐。

1 个答案:

答案 0 :(得分:0)

将您作为服务登录到Web服务,添加对登录功能的检查,以便只有PHP服务器可以访问它(我假设整个服务只能由PHP服务器访问,那就是' s为什么你首先将PHP服务器分开)。必须每隔一段时间刷新一次登录(ping)以使会话保持打开状态,服务上的所有操作都将检查此会话是否处于活动状态,如果您的Web服务仅在拉动时运行,则让Java代理关闭空闲连接/推。

你将不得不采取无聊的任务,即通过php将登录从用户转发到网络服务并完全登录,然后返回php并在用户通过身份验证后开始服务。

如果这是安全风险(你不希望PHP甚至拥有密码的哈希)那么你必须让用户自己登录到web服务然后联系你,验证用户是登录用户和开始服务。

对于哈希和盐,它们用于保护数据库中的加密数据不被窃取和读取。 (以最简单的形式,保护信用卡号码)。盐在技术上也可以是公共的哈希,但是你必须用SSL来保护它,所以没有人可以使用它来登录(如果你的用户发送了密码,则使用普通密码):P。普通密码>哈希,然后加盐>盐和结果都存储到数据库中。

如果PHP中继登录数据,那么PHP可以保持其会话的一方,因为它知道用户的身份与cookie +浏览器代理+ ip(仍然需要保持与服务的会话打开)。在用户直接登录Web服务的情况下,PHP必须向Web服务请求该信息(如果可能,请使用ip +浏览器代理)或请求会话令牌(由服务生成的字符串),该令牌必须由用户是否想要在令牌期间访问PHP服务器上的任何页面。

相关问题