403在GET变量中传递URL时禁止使用

0xA*_*Ali 3 php apache .htaccess

我遇到这样的问题:
403在PHP页面上禁止使用在$ _GET参数中编码的url调用

当我像这样传递一个url作为GET变量时,我收到"403 forbidden"错误

http://script/test.php?url=https://stackoverflow.com/questions/ask
Run Code Online (Sandbox Code Playgroud)

但这没关系.

http://script/test.php?url=stackoverflow.com/questions/ask
Run Code Online (Sandbox Code Playgroud)

即使我urlencode url它仍然给我403.

Apache mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635服务器位于-----端口80

我不认为这个服务器启用了mod_security,因为当我添加SecFilterEngine Offhtaccess时,我得到"500 Internal Server Error".

代码段:

$URL = mysql_real_escape_string($_GET['url']);
mysql_query("INSERT INTO `url` ...");
Run Code Online (Sandbox Code Playgroud)

所以问题是,我可以在不编辑httpd.conf的情况下解决这个问题,因为我没有root权限.谢谢

lun*_*chs 5

您是否可以访问apache错误日志本身?如果这是一个cPanel系统并且您具有shell访问权限,请尝试查看日志/ usr/local/apache/logs/error_log - mod_security错误将出现在那里.否则,您可以查看控制面板内部以查看是否收到任何错误消息.

即使安装了mod_security,如果不允许使用关键字,在将SecFilterEngine放入.htaccess后仍然会出现500错误.

我建议您与您的网站托管服务商联系,以确定mod_security是否是原因.如果是,您可以要求他们创建例外.(我为一家网络托管公司工作,我们几乎总是乐意为合理的应用程序制作mod_security例外)

如果它是由mod_security引起的,并且您的Web主机不会创建异常,您需要更改托管公司或找到一种不同的方式来传递URL(base64编码可能适合您)