猿问

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

我正在使用 php 记录我的网站访问者的 IP 地址以及一些其他信息 ($content),以便我可以计算访问者的数量。


我正在使用以下代码:


<?php

public 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:52


IP: 191.252.61.XX Time: 2020-06-19 11:25:02


IP: 191.252.61.XX Time: 2020-06-19 11:25:02

这是类似于针对 Java 的 MySQL 注入的某种恶意注入攻击吗?


我是否需要留意任何可疑情况并修补我的 Apache 服务器以提高安全性?


牛魔王的故事
浏览 104回答 1
1回答

哈士奇WWW

据我所知, 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希望这有帮助

繁华开满天机

这听起来像是可能的注入攻击。虽然这里讨论的是 joomla 设置并且涉及 2015 年,但签名还是值得一看的。我可能会建议检查日志以查找任何可疑活动。
随时随地看视频慕课网APP
我要回答