画像の代わりにPHPコードをアップロードできる場合、最悪の事態が発生する可能性があります。
最悪の場合:侵入者は任意のPHPコードを実行でき、サーバー上で任意のコードを実行する可能性もあります。攻撃者がシステム管理者ではないのに十分賢い場合は、サーバー/サブネット/ネットワーク全体を所有している可能性があります...
侵入者はどういうわけか私のデータベースパスワードを取得できますか?画像が保存されるディレクトリに777のファイル権限があるとします。
攻撃者がPHPコードを実行できる場合(もちろんセキュリティ対策によって異なります)、攻撃者は現在のユーザーからファイルを確実に読み取ることができるため、答えはおそらく「はい」です。
イメージディレクトリに644の権限がある場合はどうなりますか?
PHPをCGIモードで使用しない限り、Webサーバーがスクリプトを実行するために実行ビットは必要ないはずなので、それだけでは役に立ちません。
もちろん、それらはあなたが尋ねるべき質問ではありません。あなたが尋ねるべき質問は、攻撃者が最初に実行可能なPHPファイルをアップロードするのを防ぐ方法です。それに対する私の答えは、ファイル拡張子をホワイトリストと照合し、他のすべてを削除する必要があるということです。たとえば、次のようになります。
$pattern = "/\.(jpe?g|gif|png)$/iD";
if (!preg_match($pattern, $filename))
die("Please don't.");