Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java验证在PHP中使用Password_hash散列的密码_Java_Php_Hash_Password Hash_Php Password Hash - Fatal编程技术网

使用Java验证在PHP中使用Password_hash散列的密码

使用Java验证在PHP中使用Password_hash散列的密码,java,php,hash,password-hash,php-password-hash,Java,Php,Hash,Password Hash,Php Password Hash,我有一个基于PHP的web应用程序,它向Java web服务发送HTTP请求,Java web服务反过来执行Oracle数据库中请求的操作。在HTTP请求中发送密码之前,我想使用密码\u散列对密码进行散列。如果我在创建新用户时这样做,那就没有问题了。但是,当我需要使用此密码登录时,我无法在PHP中验证它,因为我没有并且无法直接访问数据库以获取存储在那里的哈希。因此,验证必须在JavaWeb服务中进行。这可能吗?如果不可能,还有什么选择?所使用的salt是随机的,因此我无法将用于登录的密码散列并发

我有一个基于PHP的web应用程序,它向Java web服务发送HTTP请求,Java web服务反过来执行Oracle数据库中请求的操作。在HTTP请求中发送密码之前,我想使用密码\u散列对密码进行散列。如果我在创建新用户时这样做,那就没有问题了。但是,当我需要使用此密码登录时,我无法在PHP中验证它,因为我没有并且无法直接访问数据库以获取存储在那里的哈希。因此,验证必须在JavaWeb服务中进行。这可能吗?如果不可能,还有什么选择?所使用的salt是随机的,因此我无法将用于登录的密码散列并发送该密码,因为我没有用于散列的salt存储在数据库中。

将您作为服务登录到web服务上,在登录函数上添加一个检查,这样只有PHP服务器可以访问它。我假设整个服务无论如何只能由PHP服务器访问,这就是为什么首先要将PHP服务器分开。登录必须每隔一段时间刷新一次ping,会话才能保持打开状态,服务上的所有操作将检查此会话是否处于活动状态,如果web服务仅在拉/推模式下运行,则让java代理关闭空闲连接

您将不得不承担通过php将登录从用户传递到web服务的枯燥任务,并在那里完全登录,然后返回到php,并在用户通过身份验证后开始服务

如果这是安全风险,您甚至不希望PHP拥有密码哈希,那么您必须让用户自己登录到web服务,然后与您联系,验证用户是否是登录用户并启动服务

至于散列和盐,它们用于保护数据库中的加密数据不被窃取和读取。最简单的形式是保护信用卡号码。salt可以是公共的,从技术上讲也是散列的,但您必须使用SSL对其进行保护,至少这样,如果您的用户发送:P.普通密码>散列,则没有人可以使用它或普通密码登录,然后添加salt>salt和存储到数据库的结果


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

因此,在生产过程中,一台服务器使用PHP,另一台服务器使用java web服务和数据库,对吗?很可能是,尽管它们可以位于同一台服务器上。出于安全原因,不能直接访问PHP中的db部分是一项要求。PHP代码中不能包含db连接信息或语句。每个salt对每个用户都是随机的,但为了验证登录,salt需要使用密码存储在db中。当I用户尝试登录时,可以使用用户名从数据库检索salt。web服务和PHP应用程序之间的身份验证需要多条消息。你能不能不使用HTTPS连接到Java服务,只转发用户名/密码,就像PHP脚本从用户那里收到的那样。。。它们仍然是SSL,TLS的加密方式与用户机器和PHP服务器之间的加密方式基本相同。