19

ユーザーがファイルをアップロードできるディレクトリがあります。

セキュリティ上の問題 (誰かが悪意のある 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>
4

2 に答える 2