我的项目有单独的服务器,我想问所有这些服务器的内容。我发现我必须使用PHP: file_get_contents
或cURL
,但接下来是我的问题。有没有办法让我的服务器验证哪个服务器可以让他们执行东西?
例如我使用这个脚本:
function is_ajax() {
// BOOLEAN return if AJAX
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
检查请求是否是基于AJAX的。
如果有办法使用,我可能会访问每个服务器的IP地址。
我可以说,在SERVER B
验证了一些信息之后,我要执行的其中一件事就是在SERVER A
上启动会话。因此,为了防止其他服务器和脚本在未经许可的情况下执行,我希望我的SERVER B
能够验证它实际上是SERVER A
谁在询问。
修改
我正在使用会话类在SERVER A
上创建会话,该会话类保存在SQL数据库中加密的数据。
同样通过使用会话cookie参数
session_set_cookie_params(
$cookieParams['lifetime'],
$cookieParams['path'],
$cookieParams['domain'],
$secure,
$httponly
);
即使服务器不同,它们共享相同的域名,但在服务器的子域中是分开的,所以也许可以让SERVER B
在SERVER A
看到会话,然后创建一个类似的会话?
答案 0 :(得分:1)
如果您将会话存储在像memcached这样的集中式数据存储中,那么如果从同一个域访问它们,您的服务器将共享相同的会话。 PHP支持在memcached中存储会话,因此您只需配置它(session.save_handler)即可。然后,您的所有会话代码仍然可以正常工作,但您的会话将在服务器之间共享。
答案 1 :(得分:0)
我满足于?SOMEPASSWORDVARIABLE = LONGSPASSWORDWITHRANDOMCHARS 正如@ complex857建议的那样。
由于file_get_contents在服务器端运行,因此猜测文件名文件并不容易 变量和密码,如果可以通过监控来自服务器的流量来监控实际请求,但可能性非常小
答案 2 :(得分:-1)
使用[crossdomain.xml][1]
文件指定哪些域可以发出请求。其他域名的请求将被拒绝。