在 CMS 中查找所有 GET 变量


find all GET variables inside CMS

我想将所有不存在的GET参数(如www.example.com?afasfnk=)重写为404页面。所以我所需要的只是获取所有存在的 GET 参数并将它们包含在我的 .htaccess 中,如下所示:

RewriteCond %{QUERY_STRING} (^|&)=(.*)
RewriteCond %{QUERY_STRING} !(^|&)=(aget|bget)(&|$)
RewriteRule ^(.*) - [F]

问题是如何最有效地找到它们。F.e. 在我的 CMS 中,我有

$filedir = $_GET['a'];

我需要提取这个"a"值等等。

没有自动的方法。如果你在Windows操作系统中有源PHP,你应该安装UltraEdit或类似的东西,并在所有源文件中搜索'$_GET['字符串,并手动注册所有变量名。最后,您将不需要的单词放入 apache 禁止词列表中。

在Unix OS中,你可以在DocumentRoot目录下执行以下操作:

grep -R '$_GET'[' .

另一种可能性是在 apache 访问日志文件中搜索这些单词,例如

vi access.example.com.log

您应该在应用程序中实现此类重定向,而不是在服务器中实现。没有自动方法可以更新 .htaccess 中已使用参数的此类列表,并且您无缘无故地限制应用程序中请求参数的使用。

另一方面,如果应用程序中无法评估匹配的请求参数,则可以直接显示 404 页面或重定向到一个页面(请参阅:header() )。