【发布时间】:2019-04-12 07:27:54
【问题描述】:
我有一个使用 $_GET 解析 url 的简单自定义 MVC 应用程序,我已经让它在我的开发服务器以及使用 php 7.1 的几个不同的 webhosts 上运行......但我正在尝试使用 x10hosting 的免费的灯托管和从 $_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,我是几乎没有丢失...任何帮助将不胜感激
【问题讨论】:
-
在任何“免费”主机上,对
.htaccess和当然php.ini的访问也将非常有限。我的“猜测”也可能是 mod_security 问题,可能基于url参数名称。尝试不同的名称。但我想你不能在你的“免费”主机上关闭 mod_security 。删除<IfModule>包装器 - 会发生什么?否则,您需要发布您的前端控制器,以便我们排除这种情况。 -
我刚找到这个...看来我需要一个新主机...我正在使用免费预算,任何关于免费主机的建议,我可以 ftp 自定义 php 7.1 代码并禁用 mod_sec? x10hosting.com/community/threads/disable-mod_security.196777
-
您是否尝试过更改 URL 参数名称? (您可以更改 URL 参数名称吗?)我在许多共享主机上遇到了 mod_sec 规则,这些规则只是根据请求中使用的某些参数名称来阻止请求。只需更改参数名称可能就足够了吗?
-
我的天啊,哇哈哈……这有效……谢谢我的朋友,你治好了我的头痛
-
不客气。我已将其添加为答案,因为它可能对其他人有所帮助。