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所说,大多数房东将很乐意为您解决问题。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...