为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我使用 PHP 的 $_SERVER 变量得到一个随机字符串作为 IP 地址?

为什么我使用 PHP 的 $_SERVER 变量得到一个随机字符串作为 IP 地址?

PHP
牛魔王的故事 2023-06-24 14:56:53
我正在使用 php 记录我的网站访问者的 IP 地址以及一些其他信息 ($content),以便我可以计算访问者的数量。我正在使用以下代码:<?phppublic static function logContent(array $content = null){        try {            $myFile = fopen("visitors.txt", "a");            $txt = "IP: ";            if (isset($_SERVER['HTTP_CLIENT_IP']))                $ipAddress = $_SERVER['HTTP_CLIENT_IP'];            else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))                $ipAddress = $_SERVER['HTTP_X_FORWARDED_FOR'];            else if (isset($_SERVER['HTTP_X_FORWARDED']))                $ipAddress = $_SERVER['HTTP_X_FORWARDED'];            else if (isset($_SERVER['HTTP_FORWARDED_FOR']))                $ipAddress = $_SERVER['HTTP_FORWARDED_FOR'];            else if (isset($_SERVER['HTTP_FORWARDED']))                $ipAddress = $_SERVER['HTTP_FORWARDED'];            else if (isset($_SERVER['REMOTE_ADDR']))                $ipAddress = $_SERVER['REMOTE_ADDR'];            else                $ipAddress = 'UNKNOWN';            $txt .= $ipAddress;            $txt .= " Time: " . date("Y-m-d h:i:s", time());            $txt .= "\n";            if (!empty($content) && is_array($content)) {                foreach ($content as $k => $v) {                    $txt .= "$k : ";                    $txt .= $v;                    $txt .= "\n";                }                $txt .= "\n";            }            fwrite($myFile, $txt);            fclose($myFile);        } catch (\Exception $e) {        }    }?>这段代码工作正常。通常,我有如下条目:IP: 36.80.227.XX Time: 2020-06-19 08:23:52IP: 191.252.61.XX Time: 2020-06-19 11:25:02IP: 191.252.61.XX Time: 2020-06-19 11:25:02这是类似于针对 Java 的 MySQL 注入的某种恶意注入攻击吗?我是否需要留意任何可疑情况并修补我的 Apache 服务器以提高安全性?
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

据我所知, HTTP_X_FORWARDED_FOR 标头是由客户端/代理发送的,您不对 $_SERVER['HTTP_X_FORWARDED_FOR'] 的内容进行任何控制。

所以是的,有人尝试过 SQL 注入,但在这种情况下,它不敏感(只是输出到文本文件中)。在输出到文件之前,您必须检查 $ipAddress 的内容。

编辑:您可以通过以下方式重现此行为:

  curl -H 'X-Forwarded-For: 1.1.1.1' https://www.example.com/mypage
  curl -H 'X-Forwarded-For: <SOME RANDOM INPUT>' https://www.example.com/mypage

希望这有帮助


查看完整回答
反对 回复 2023-06-24
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

这听起来像是可能的注入攻击。虽然这里讨论的是 joomla 设置并且涉及 2015 年,但签名还是值得一看的。

我可能会建议检查日志以查找任何可疑活动。


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信