Php 有没有办法用curl验证客户端?

Php 有没有办法用curl验证客户端?,php,Php,我正在用php制作一个客户机/服务器应用程序 服务器获取一个数组并序列化和回显结果 服务器可以托管在www.site1.com/server.php上 echo serialize($array); if($_SERVER['QUERY_STRING'] === "supersecretpassword"){ echo curl_exec($ch) } else { exit(); } 客户机可以托管在www.site2.com/client.php上 $ch = curl_init

我正在用php制作一个客户机/服务器应用程序

服务器获取一个数组并序列化和回显结果

服务器可以托管在www.site1.com/server.php上

echo serialize($array);
if($_SERVER['QUERY_STRING'] === "supersecretpassword"){
  echo curl_exec($ch)
} else {
  exit();
}
客户机可以托管在www.site2.com/client.php上

$ch = curl_init('http://www.site1.com/server.php');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

echo curl_exec($ch);
$ch = curl_init('http://www.site1.com/server.php?supersecretpassword');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
echo curl_exec($ch);
我试图做的是使server.php仅在客户端来自www.site2.com/client.php时回显信息

差不多

iff('Client is from www.site2.com/client.php'){
  echo curl_exec($ch)
} else {
  exit();
}
site2没有SSL


我应该查找什么变量,或者有什么方法可以做到这一点?

如果客户端有固定的IP,您可以反向DNS客户端,查看IP是否正确。但不知道这有多可靠。我不喜欢黑色艺术——这条路通向黑暗面。

client.php

$ch = curl_init('http://www.site1.com/server.php');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

echo curl_exec($ch);
$ch = curl_init('http://www.site1.com/server.php?supersecretpassword');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
echo curl_exec($ch);
server.php

echo serialize($array);
if($_SERVER['QUERY_STRING'] === "supersecretpassword"){
  echo curl_exec($ch)
} else {
  exit();
}

作为额外的安全措施,如果$\u server['REMOTE\u ADDR']等于client.php所在计算机的IP地址,您可以在server.php中进行检查。

无法准确地保护您描述的通信安全。对于您的问题,真正注重安全的答案是设置防火墙。

没有SSL,中间人攻击不是很容易受到攻击吗?@DanMan-是的,是的。为了防止这种情况发生,您可以使用triple-des或blowfish或其他方法对响应进行加密,因为客户端和服务器可以共享机密。