我有一个用户可以上传文件的目录。
为了避免安全问题(例如,有人上传了恶意 php 脚本),我目前通过附加来更改文件的扩展名.data
,但是在下载文件时,他们必须手动删除.data
.
另一种常见的解决方案是将文件上传到 Apache 不提供服务的目录中,并让一个 php 脚本通过调用来管理所有下载readfile()
。
我想做的是简单地禁止在上传文件夹中执行任何脚本(php、perl、cgi 脚本,无论我将来安装什么)。这个 SO answer.htaccess
建议在该文件夹的文件中添加以下行:
SetHandler default-handler
但是,在我的情况下,这没有效果(我放在该文件夹中的示例 php 脚本仍然执行)。我究竟做错了什么?
阿帕奇配置
这台机器是一个正在运行的 VPS(虚拟专用服务器)Debian GNU/Linux 6.0.7 (squeeze)
,据我所知(我记下了我在该服务器上运行的所有命令,所以我的“记忆”应该非常准确),我在 apache2 中没有改变任何东西配置,从运行开始sudo apt-get install php5
,并创建/etc/apache2/sites-enabled/mysite.com
具有以下内容的文件:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/me/www/mysite.com/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/me/www/mysite.com/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>