web-dev-qa-db-ja.com

htaccess-特定のディレクトリでのphpファイルの実行を保護する

特定のアップロードディレクトリでphpの実行を保護するにはどうすればよいですか?
ほとんどの場合、人々は.htaccessをアップロードフォルダーに入れて、phpの実行を保護します。しかし、誰かが攻撃者に置き換えることができると言います。
ルートの.htaccessからどのように制御できますか?
以下のコードをルート.htaccessに配置しようとしましたが、「500内部サーバーエラー」と表示され、ウェブサイトがダウンします。

<Directory ^public_html/product/uploads>
<Files ^(*.php|*.phps)>
    order deny,allow
    deny from all
</Files>
</Directory>

前もって感謝します

2
ronaldtgi

"を使用してみましたか?

<Directory "^public_html/product/uploads">
<Files "^(*.php|*.phps)">
    order deny,allow
    deny from all
</Files>
</Directory>

これにより、ユーザーはPHPファイルにアクセスできなくなります。または、このディレクトリのPHPエンジンを無効にして、ファイルの読み取りを許可することもできます。関連する質問 無効にするPHP .htaccessを含むディレクトリ(すべてのサブディレクトリを含む)内

0

@ Dog-eat-cat-worldからの回答は良いスタートですが、.htaccessを一緒に使用することは避けてください。

これは巨大なパフォーマンスキラーであり、Apache Httpd以外のものを使用する場合は(nginxのように)使用されない場合もあります。

このような制限を(仮想)Host構成ファイル内に置くことをお勧めします。また、例としてDrupal推奨 ここ する:

  • 不要なオプションをオフにする
  • Phpハンドラーを存在しないものにオーバーライドします。
  • おそらくphpエンジンを完全に無効にします。

動作中の./sites/default/files/.htaccesから直接drupal 7セットアップ。


#不要なオプションをすべてオフにします。

オプションなし

オプション+ SymLinksをフォロー

#catch-allハンドラーを設定して、スクリプトが実行されないようにします。

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006

#評価リストで後で実行する場合は、ハンドラーを再度オーバーライドします。

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003

#安全な方法がわかっている場合は、PHPエンジンを完全に無効にします。

php_flagエンジンがオフ。


0
LvB

他のすべての答えは良いです。 Lawriに同意します。Apache構成のVirtualHostセクションに制限を設け、.htaccessファイルを使用しないでください。パフォーマンスヒットを引き起こし、デバッグが困難になり、提案された両方のソリューションをバイパスするために使用できます。そのため、Apache構成にAllowOverride Noneも追加する必要があります。それ以外の場合、攻撃者は 自己完結型のhtaccess webshel​​l をアップロードする可能性があります。

0
wireghoul