特定のアップロードディレクトリでphpの実行を保護するにはどうすればよいですか?
ほとんどの場合、人々は.htaccessをアップロードフォルダーに入れて、phpの実行を保護します。しかし、誰かが攻撃者に置き換えることができると言います。
ルートの.htaccessからどのように制御できますか?
以下のコードをルート.htaccessに配置しようとしましたが、「500内部サーバーエラー」と表示され、ウェブサイトがダウンします。
<Directory ^public_html/product/uploads>
<Files ^(*.php|*.phps)>
order deny,allow
deny from all
</Files>
</Directory>
前もって感謝します
"
を使用してみましたか?
<Directory "^public_html/product/uploads">
<Files "^(*.php|*.phps)">
order deny,allow
deny from all
</Files>
</Directory>
これにより、ユーザーはPHPファイルにアクセスできなくなります。または、このディレクトリのPHPエンジンを無効にして、ファイルの読み取りを許可することもできます。関連する質問 無効にするPHP .htaccessを含むディレクトリ(すべてのサブディレクトリを含む)内
@ Dog-eat-cat-worldからの回答は良いスタートですが、.htaccessを一緒に使用することは避けてください。
これは巨大なパフォーマンスキラーであり、Apache Httpd以外のものを使用する場合は(nginxのように)使用されない場合もあります。
このような制限を(仮想)Host構成ファイル内に置くことをお勧めします。また、例としてDrupal推奨 ここ する:
動作中の./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エンジンがオフ。
他のすべての答えは良いです。 Lawriに同意します。Apache構成のVirtualHostセクションに制限を設け、.htaccessファイルを使用しないでください。パフォーマンスヒットを引き起こし、デバッグが困難になり、提案された両方のソリューションをバイパスするために使用できます。そのため、Apache構成にAllowOverride None
も追加する必要があります。それ以外の場合、攻撃者は 自己完結型のhtaccess webshell をアップロードする可能性があります。