2011-09-08 43 views
1

首先,如果由于我的知识不足导致问题不清楚,我感到抱歉。apache如何调用/调用适当的处理程序/解释器?

我想知道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,则可以执行该文件(假设它具有执行权限)并包含恶意PHP代码使用EXIF元数据可以做有害的事情。

回答

1

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

它特别共同要设置处理基于文件扩展名,虽然如此,Apache提供了AddHandler指令,因为这样做的快捷方式。

欲了解更多详情,看看the handler documentation

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

相关问题