Php 获取客户端用于请求数据的网站的IP
我试着只允许某些IP使用PHP资源,我试着使用服务器引用器,但不幸的是,它很容易被欺骗,因为它是一个客户端头,可以很容易地修改 我希望资源可以从网站上访问,但访问网站的客户端的IP与网站上的IP不同。 这意味着客户端不能通过浏览器或curl直接访问资源,但如果通过网站访问,则应允许访问。 我想我可以使用这些$server密钥中的一些:Php 获取客户端用于请求数据的网站的IP,php,Php,我试着只允许某些IP使用PHP资源,我试着使用服务器引用器,但不幸的是,它很容易被欺骗,因为它是一个客户端头,可以很容易地修改 我希望资源可以从网站上访问,但访问网站的客户端的IP与网站上的IP不同。 这意味着客户端不能通过浏览器或curl直接访问资源,但如果通过网站访问,则应允许访问。 我想我可以使用这些$server密钥中的一些: 'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','
'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR'
但是我不知道使用哪一个来获取网站IP以查看它是否与预期的匹配,以及哪一个返回客户端的IP。
我已经试过了,但是不起作用,因为它可以被欺骗
public function getHost()
{
$url = parse_url($_SERVER['HTTP_REFERER']);
if ($url != null) {
return gethostbyname($url["host"]); // returns referer IP's
}
}
显然getHost()应该从上面提到的返回一个键,但我不确定是哪一个
提前谢谢你想测试@deceze是否正确,所以我做了一些测试 左:本地,右:同一主机 左:本地,右:跨站点
因此,可悲的是,他是,没有办法检查使用$_服务器,并引用其不可靠的解决方案,直接执行来自服务器的js请求,并将其作为内容注入,显示预呈现的数据如果请求是由浏览器(即客户端本身)发出的,则不能通过IPs进行限制。请求需要来自第三方的web服务器,因此客户端向第三方服务器发出请求,而第三方服务器向您的服务器发出请求。