$_GET 抛出 403

$_GET throws 403

我有一个简单的自定义 MVC 应用程序,它使用 $_GET 来解析 url,我已经在我的开发服务器以及一些使用 php 7.1 的不同网络主机上运行了它。 .. 但我正在尝试使用 x10hosting 的免费 lamp 托管,并且从 $_GET 传递的数据作为 403...

我已经证明它可以在其他服务器以及我自己的开发服务器上使用这个

echo '<pre>', $route->path, $_GET['url'], '</pre>'; 

当去 url http://app/admin...我循环中的这一行给了我应该期待的...

/admin
adminadmin

但是在 x10 的服务器上我得到了这个

/403.shtml
admin403.shtml

我尝试使用 urlencode($_GET) 编码为 base64,并使用

在 .htaccess 中禁用 mod_sec
<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>

两种解决方案都不起作用...我几乎可以肯定这是服务器配置问题,但访问权限几乎仅限于 .htaccess 和 php.ini ....我还没有触及 php或 apache 一会儿,我有点迷路...任何帮助将不胜感激

这听起来像是 mod_security 类型的问题。而且,正如您所发现的,您是 unable to disable mod_security on the free hosting platform.

我在许多共享主机上遇到过 mod_sec 规则,这些规则只是根据某些参数名称阻止请求(据说阻止常见的 XSS 尝试)。 url 是一个常见的。 site 是另一个。只需更改参数名称即可。

"Free" 托管帐户总是会有一些限制。如果这是唯一阻碍你的事情,那么你很幸运。