Ни расширение файла, ни тип mime не могут обеспечить вам 100% безопасности при работе с файлом изображения. Но если вы не собираетесь выполнять файл (например, с помощью include ()), это не проблема, и вам не нужно проверять код PHP или что-то еще. Единственное нарушение безопасности, которое можно себе представить, используя поддельный файл изображения, - это то, что использует движок рендеринга браузера. Это невозможно эффективно защитить от серверной части и является обязанностью поставщика браузера.
Итак, если вы используете is_uploaded_file()
и move_uploaded_file()
при обработке выгрузки, у вас все будет хорошо, по крайней мере, на фронте формата изображения. Обязательно прочитайте нижеприведенный пост @ bobince и перейдите по ссылке, где содержится много полезной информации о других аспектах безопасности при работе с файлами.
Однако вы можете обеспечить максимальную безопасность, скопировав изображение в новый контейнер изображений, используя GD's imagecopy . Это приведет к удалению любой ID3 и другой информации заголовка, содержащейся в файле, и, вероятно, уничтожит любые попытки эксплойта (GD, вероятно, захлебнется таким файлом и вернет ошибку). Конечно, это работает только для GIF, JPEG и PNG, и вы можете столкнуться с некоторыми проблемами, такими как проблемы альфа-канала и цветового профиля.