【问题标题】:find all GET variables inside CMS在 CMS 中查找所有 GET 变量
【发布时间】:2013-10-18 08:11:17
【问题描述】:

我想将所有不存在的 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”值等等..

【问题讨论】:

  • 您不应该直接在您的应用程序中访问$_GET。使用类似$this->request->get() ...然后您可以轻松地在应用程序级别修改和模拟请求

标签: php .htaccess parameters get file-search


【解决方案1】:

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

在 Unix 操作系统中,您可以在 DocumentRoot 目录下进行:

grep -R '$_GET\[' .

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

vi access.example.com.log

【讨论】:

  • 非常感谢,这正是我想要的。我使用 "> filename.txt" 和 grep 命令,将输出写入文件,然后 preg_match_all,以清除所有结果。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多