gpt4 book ai didi

php - set $_SERVER ['HTTP_CLIENT_IP' ] 的值会是一个空字符串吗?

转载 作者:可可西里 更新时间:2023-11-01 12:23:59 25 4
gpt4 key购买 nike

我有一个简单的脚本来确定用户的 IP 地址:

function GetIp(){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}

现在在网上某个地方我看到有人在使用这个脚本:

if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '')
$Ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '')
$Ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '')
$Ip = $_SERVER['REMOTE_ADDR'];

我想知道我的实现是否有问题。我是否需要检查 $_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR'] 的值>,或者 $_SERVER['REMOTE_ADDR'] 是空的?或者实际上没有必要这样做?

最佳答案

如果你想找出客户端的 IP 地址的原因真的很重要,那就去他妈的所有这些东西。

这些 header 值中的任何一个都可以被随意欺骗。

REMOTE_ADDR 是唯一真正可靠的信息,因为它是由处理请求的网络服务器传输给您的。理论上可以falsified as well ,但这比欺骗 header 值和完全不同的攻击类别要困难得多。

在反向代理背后的非常非常具体的托管环境中也有异常(exception)。在这些情况下,管理该代理的人将能够告诉您需要测试的 header 值。

关于php - set $_SERVER ['HTTP_CLIENT_IP' ] 的值会是一个空字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com