前回の FuelPHP ファイルアップロード、ホワイトリストとブラックリスト の補足です。
ホワイトリストとブラックリストを両方入れた場合について。
$config = array( 'ext_blacklist' => array('pdf', 'docx'), 'ext_whitelist' => array('jpg', 'jpeg', 'gif', 'png'), );
という例を前回取り上げました。今回は、同じ拡張子を ext_blacklist
と ext_whitelist
とで指定したらどうなるか?です。例えば、
$config = array( 'ext_blacklist' => array('jpg'), 'ext_whitelist' => array('jpg', 'gif', 'png'), );
のような場合です。試したところ、「jpg は許可されない、gif, png は許可される」でした。ということで、ホワイトリスト優先ではなく、ホワイトリストもブラックリストも両方ともパスするもののみ許可、というのが正しいです (UPLOAD_ERR_EXT_BLACKLISTED で弾かれました)。
この例だと、jpg はブラックリスト指定されているので、ホワイトリスト指定しても許可されない、というわけです。
同じ場所にホワイトリストとブラックリストと指定している場合はすぐ分かりますが、ブラックリストは大元の config ファイルで指定、ホワイトリストは Upload::process
の直前で指定、というようなケースでは、「ホワイトリスト指定しても許可されない」とハマる可能性もありますね。