Apache 错误地解析以 /index.php/ 开头的路径的请求

Apache 错误地解析以 /index.php/ 开头的路径的请求

在检查访问日志时,我注意到 Apache 返回了以下自动漏洞扫描的 200 状态:

POST /index.php/api/Uploadify/preview HTTP/1.1

此 VHost 没有重写规则,文件/URL 也不存在。我似乎找不到 Apache 指令,Google 确信我想创建此行为,而不是禁用它。

有人能向我解释为什么 Apache 解析这个 URL,以及/或者如何让它返回 404 吗?

答案1

阿帕奇的AcceptPathInfo

AcceptPathInfo此行为由Apache 中的指令控制2.22.4

此指令控制是否接受或拒绝包含实际文件名(或现有目录中不存在的文件)后面的尾随路径名信息的请求。尾随路径名信息可在环境变量中提供给脚本 PATH_INFO

例如,假设位置/test/指向仅包含单个文件的目录。然后对和的here.html请求 都收集为 。/test/here.html/more/test/nothere.html/more/morePATH_INFO

默认情况下

  • 核心处理程序拒绝PATH_INFO正常文件

  • 其他处理程序(例如 mod_cgi、mod_isapi 或 mod_php)通常接受PATH_INFO

如果您想要明确禁用所有处理程序的此功能,请使用:

AcceptPathInfo Off

PHP-FPM

似乎AcceptPathInfo不适用于 PHP-FPM,例如,如果有如下代理处理程序:

<FilesMatch "\.php$">
    SetHandler  "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
<Proxy "fcgi://localhost/">
</Proxy>

在这种情况下,您可以例如禁止访问所有包含的 URL .php/

相关内容