如何解决403当在GET变量中传递URL时被禁止
| 我遇到这样的问题: 403在PHP页面上禁止使用$ _GET参数编码的URL调用 我收到“禁止403”错误 当我像这样将URL作为GET变量传递时http://script/test.php?url=https://stackoverflow.com/questions/ask
但这没关系。
http://script/test.php?url=stackoverflow.com/questions/ask
即使我使用urlencode网址,它仍然会给我一个403。
位于-----端口80的Apache mod_fcgid / 2.3.6 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635服务器
而且我不认为该服务器启用了mod_security,因为当我在htaccess中添加“ 2”时,我会收到“ 500 Internal Server Error”。
程式码片段:
$URL = mysql_real_escape_string($_GET[\'url\']);
mysql_query(\"INSERT INTO `url` ...\");
所以问题是,因为我没有root特权,所以可以不编辑httpd.conf来解决此问题。
谢谢
解决方法
您是否有权访问apache错误日志本身?如果这是cPanel系统,并且您具有外壳访问权限,请尝试查看日志/ usr / local / apache / logs / error_log-mod_security错误将出现在此处。否则,您可以在控制面板内部查看,看是否收到任何错误消息。
即使安装了mod_security,如果不允许将关键字SecFilterEngine放在.htaccess中,您仍然会出现500错误。
我建议与您的Web主机联系,以确定是否是mod_security。如果是这样,您可以要求他们创建一个例外。 (我在一家网络托管公司工作,我们几乎总是乐于为合理的应用程序提供mod_security例外)
如果是由mod_security引起的,并且您的虚拟主机不会创建异常,则您需要更改托管公司或寻找其他方法来传递url(base64编码可能对您有用)
, 对我来说,此问题的解决方案是让主机(hostgator)在我的站点上为mod_security创建一个例外。 mod_security \用于将某些类型的操作列入黑名单,无论出于何种原因,似乎包含URL(http://www.etc)的$ _GET请求都是其中之一。正如lunixbochs所说,大多数房东将很乐意为您解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。