在处理文件和文件路径时,Drupal面对的危险和其它web应用是一样的。
文件权限
文件权限应该这样设置,那就是用户不能操作(添加,重命名,或者删除)文件。Web服务器对于Drupal文件和目录,应该仅具有只读的权限。不过有个例外,那就是文件系统路径。很明显,web服务器必须对该目录具有访问权限,这样才能写入上传文件。
受保护文件
Drupal自带的.htaccess文件包含了以下代码:
# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|module|profile|po
|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl
|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>
Order指令设为了allow,deny,但是却没有包含Allow或者Deny指令。这意味着默认的行为是拒绝。换句话说,对表20-2所示文件的请求都会被拒绝访问。
表 20-2.根据FilesMatch指令的正则表达式所拒绝的文件
后缀 .engine 模板引擎
后缀.inc 库文件
后缀.info 模块和主题的.info文件
后缀.install 模块的.install文件
后缀.module 模块文件
后缀.profile 安装器
后缀.po PO文件(翻译)
后缀.sh Shell脚本
后缀.*sql SQL脚本
后缀.theme PHP主题
后缀.tpl.php PHPTemplate模板文件
后缀.tpl.php4 PHPTemplate模板文件
后缀.tpl.php5 PHPTemplate模板文件
后缀.xtmpl XTemplate文件
名为 code-style.pl 语法检查脚本
前缀为Entries. CVS文件
名为Repository CVS文件
名为Root CVS文件
名为Tag CVS文件