У меня есть каталог, в котором пользователи могут загружать файлы.
Чтобы избежать проблем с безопасностью (например, кто-то загружает вредоносный php script), я в настоящее время изменяю расширение файлов, добавляя, например, .data
, но затем при загрузке файла им необходимо вручную удалить .data
.
Другим распространенным решением является загрузка файлов в каталог, который не обслуживается Apache, и иметь php script управлять всеми загрузками, вызывая readfile()
.
Я бы хотел просто запретить выполнение любых сценариев (php, perl, cgi-скриптов, что бы я ни установил в будущем) в папке для загрузки. Этот ответ SO предлагает добавить следующую строку в файл .htaccess
в этой папке:
SetHandler default-handler
Однако в моем случае это не имеет никакого эффекта (пример php script, который я помещаю в эту папку, все еще выполняется). Что я делаю неправильно?
Конфигурация Apache
Аппарат VPS (Virtual Private Server) работает под управлением Debian GNU/Linux 6.0.7 (squeeze)
, и насколько я помню (я записываю все команды, которые я запускаю на этом сервере, поэтому моя "память" должна быть довольно точной), я dindn "ничего не измените в конфигурации apache2, appart из запуска sudo apt-get install php5
и создайте файл /etc/apache2/sites-enabled/mysite.com
со следующим содержимым:
<VirtualHost *:80>
ServerAdmin [email protected]
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>