使用端口 80 作为 Web 服务器添加了奇怪的查询字符串

使用端口 80 作为 Web 服务器添加了奇怪的查询字符串

当我的 Web 服务器使用端口 80 时,任何访问者访问的页面都会附加一个奇怪的查询字符串,从而破坏我的部分服务。我将 nginx 更改为使用端口 81,它运行正常,无需附加查询字符串。

查询字符串如下所示:http://www.site.com/some/url/script.php?COLLCC=2749699728&

我的代码中没有任何内容会导致这种情况发生,尤其是因为它只发生在端口 80 上,无论我使用什么 Web 服务器(Apache、Nginx 等)。有人知道是什么原因造成的吗?

当我这样做时print_r($_SERVER),我得到了这个:

[argv] => Array
    (
        [0] => COLLCC=2693200777&
    )

[argc] => 1

我使用的是 CentOS 6 64 位,带有 Nginx + PHP-CGI

答案1

这可能是某个负载均衡器添加的粘性值。只有在禁用 Cookie 的情况下才应将其添加到查询字符串中。

然而,它破坏了你的代码这一事实应该让你担心。你的代码应该足够强大,可以处理这种情况。它只需要忽略额外的查询参数。

您可能能够通过重写查询来删除该参数来解决此问题。但是,这可能会掩盖代码中的重大问题。

尝试从同一主机访问 Web 服务器,看看是否是上游问题。您可以使用文本浏览器(如lynx或 )w3m,或使用隧道ssh,这样就可以绕过网络。

答案2

据我所知,我的主机提供商有时会在我的网络服务器遭受大规模 DDOS 攻击时添加参数 COLLCC=xxxxx。

这只是一种保护措施。我承认这很丑陋……但当许多僵尸网络瞄准我的服务器时,它必须保护我的网站。

我希望我能帮助到别人。请原谅我的英语不好,因为我是法国人。

答案3

可能是仅针对端口 80 指定的 mod_rewrite 规则...检查您的 httpd.conf 和/或任何 .htaccess 文件?

相关内容