1

私はapacheでのphp.ini写真のアップロードに次のディレクトリを使用しています-redhat/AWS

drwxrwxr-x  2 user2 user2 4096 Mar  4 08:10 datingPhotoUploads

Apacheはユーザー「apache」として実行されています。

ユーザー「apache」がこのフォルダーに書き込むことができるように、このフォルダーにアクセス許可を与えるにはどうすればよいですか。それ以外の場合は、可能な限り安全ですか。

ありがとうございました

4

2 に答える 2

3

通常、upload_tmp_dirは/tmpです。この/tmpディレクトリは、いくつかの特別な権利(chmod 1777)として使用されます。ここで、実際の特別な権利は1です。これはスティッキービットです。rwxつまり、ディレクトリの場合、このディレクトリに作成されたファイルは、ファイルに他の権限が適用されているように見えても、ファイルの所有者だけが削除できます。

したがって、apacheユーザーによってアップロードされた1777権限を持つ一時フォルダーにファイルをアップロードすると、apacheのみがこれらのファイルを削除できます。良い出発点。

これは、 datingPhotoUploadsディレクトリで使用できます。ただし、ディレクトリのグループ所有権()を使用して管理することもできますchmod user2:apache; chmod 2770 datingPhotoUploads;。ここで、chmodの770部分は、chmod部分のユーザーおよびグループ所有者の読み取り、書き込み、および削除を意味します。つまり、この2ディレクトリに作成されたすべてのファイルは、ディレクトリと同じ所有権を持つことになりuser2:apacheます。

upload_tmp_dirの主な問題は次のとおりです。

  • このapache書き込み可能ディレクトリはapacheユーザーが到達できますか?/tmpを使用していない場合、apacheはおよび/some/where/datingPhotoUploadのディレクトリコンテンツを読み取ることができる必要があります。したがって、xの右側の部分は、パスに先行するすべてのこれらのすべてについて、他の人(または、apacheがグループの所有者である場合はグループ)に設定する必要があります。/some/some/where
  • このパスは、すべてのphpアプリケーションで使用できますか、それとも実行中のアプリケーションでのみ使用できますか?これがの主な問題/tmpです。このディレクトリは、ホストで実行されているすべてのPHPアプリケーションで使用できます。アプリケーションごとにupload_tmp_dirを変更すると、他のアプリケーションへのアクセスが制限される可能性があります。特に、すべてのphpアプリケーションにopen_basedir制限を設定し、現在のアプリケーションのみが設定で許可/some/where/datingPhotoUploadしている場合はそうopen_basedirです。
  • このディレクトリのサイズは十分ですか?大量のアップロードや大量アップロードには注意してください。このディレクトリが悪意のあるユーザーによっていっぱいになるとどうなりますか?
  • このディレクトリでコードを実行する方法はありませんか?eximデータにphpコードを含む画像をアップロードすることは、コード包含攻撃の例です。このディレクトリがWebサーバーのディレクトリルートの外にあることを確認しますか?このディレクトリをターゲットとする特別なパスでphpの実行が許可されないことを確認しますか(このディレクトリのphpハンドラーを削除する可能性があります)?
于 2013-03-04T09:24:26.630 に答える
2

画像をアップロード(ファイルを作成)するには、フォルダに-wx権限が必要です。要求のみを書き込む--x(読み取りおよび実行と同じ)。

使用時に実行されているユーザーphpを確認するには:<?php echo exec('whoami'); ?>

于 2013-03-04T08:59:57.203 に答える