apache如何调用/调用适当的处理程序/解释器?

时间:2011-09-08 17:13:49

标签: apache security

首先,如果由于我的知识不足而导致问题不清楚,那就很抱歉。

我很想知道 apache如何调用适当的引擎/调用程序来提供请求。假设,用户请求http://somesite.com/someurl.php - 现在apache如何确定它需要启动PHP解释器? apache是​​否根据文件扩展名/ MIME类型或其他任何内容来确定?

我所知道的是:我可以配置apache来根据文件的扩展名调用某些解释器,例如:

AddHandler cgi-script .cgi .py
# Tells apache to treat .cgi & .py files to treat as cgi scripts

为什么我关心它?最近,我从我的问题(PHP file upload: mime or extension based verification?)中了解到,如果某个用户上传的文件具有错误的MIME类型(即image/jpeg),但扩展名为.php,则该文件可能会被执行(假设它已获得执行权限)并且EXIF元数据中包含的恶意php代码可以做有害的事情。

1 个答案:

答案 0 :(得分:1)

完全取决于服务器的配置方式。默认情况下,Apache始终使用默认处理程序,该处理程序仅提供文件内容。但是,您可以使用SetHandler指令更改它。该指令可以放在配置中的任何位置,包括<Files><Directory><Location>块,从而可以根据文件系统路径,URL前缀或几乎设置处理程序Apache可以访问的任何其他变量。

特别是 common 根据文件扩展名设置处理程序,因此Apache提供AddHandler指令作为执行此操作的快捷方式。

有关详细信息,请查看the handler documentation

P.S。对于它的价值,文件系统通常不存储MIME类型数据,因此Apache通常必须通过检查扩展名来猜测文件的MIME类型。