通常、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ハンドラーを削除する可能性があります)?