Много читаю про то что при загрузке картинок пользователями часто можно подхватить вредоносный скрипт (шелл, бэкдор и пр.)
Если при сохранении файла полагаться на то имя, что юзер передал - то да, будет огромная дыра. А если имя в скрипте как-нибудь безопасно генерировать, то никакой дыры не будет, сервер не будет исполнять эти файлы PHP-интерпретатором. К примеру, в качестве имени - хэш от содержимого файла (заодно поможет бороться с дублями), в качестве расширения - либо jpeg, либо gif, либо png, исходя из первых нескольки байтов файла (если не попадает ни под один из указанных форматов - то отказ)