微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我遇到这样的问题:
403 Forbidden on PHP page called with url encoded in a $_GET parameter

我收到“403禁止错误
当我像这样传递一个url作为GET变量时

http://script/test.PHP?url=https://stackoverflow.com/questions/ask

但这没关系.

http://script/test.PHP?url=stackoverflow.com/questions/ask

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

Apache mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at —– Port 80

我不认为这个服务器启用了mod_security,因为当我在htaccess中添加SecFilterEngine Off时,我得到“500 Internal Server Error”.

代码段:

$URL = MysqL_real_escape_string($_GET['url']);
MysqL_query("INSERT INTO `url` ...");

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

解决方法:

您是否可以访问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编码可能适合您)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐