ユーザーがファイルをアップロードできるディレクトリがあります。
セキュリティ上の問題 (誰かが悪意のある php スクリプトをアップロードするなど) を避けるために、私は現在、ファイルの拡張子を追加.data
などで変更していますが、ファイルをダウンロードするときは、手動で.data
.
別の一般的な解決策は、Apache によって提供されていないディレクトリにファイルをアップロードし、.php スクリプトを呼び出してすべてのダウンロードを管理するreadfile()
ことです。
私がやりたいことは、アップロード フォルダー内のスクリプト (php、perl、cgi スクリプトなど、将来インストールする可能性のあるもの) の実行を単純に禁止することです。この SO 回答.htaccess
は、そのフォルダー内のファイルに次の行を追加することを提案しています。
SetHandler default-handler
ただし、私の場合、これは効果がありません (そのフォルダーに入れたサンプル php スクリプトは引き続き実行されます)。私は何を間違っていますか?
アパッチ構成
マシンは を実行している VPS (Virtual Private Server)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>