Я использую инструмент загрузки изображений для моего сайта.Система должна позволять любым пользователям загружать только файлы JPEG и PNG.Я, конечно, беспокоюсь о безопасности, и поэтому мне интересно, что многие умные люди, чем я, чувствуют по поводу следующих проверок для разрешения загрузки:
1) Сначала внесите белый список в список допустимых расширений файлов в PHP дляразрешить только PNG, PNG, JPG, JPG и JPEG.Получить расширение файла пользователя можно с помощью такой функции, как:
return end(explode(".", $filename));
Это должно помочь запретить пользователю загружать что-либо вредоносное, например, .png.php.Если это пройдет, перейдите к шагу 2.
2) Запустите функцию php getimageize () для файла TMP.Через что-то вроде:
getimagesize($_FILES['userfile']['tmp_name']);
Если это не возвращает false, продолжайте.
3) Убедитесь, что файл .htaccess размещен в каталоге загрузки, чтобы любые файлы в этом каталоге не могли быть проанализированыФайлы PHP:
php_admin_value engine Off
4) Переименуйте файл пользователя во что-то заранее определенное.IE
$filename = 'some_pre_determined_unique_value' . $the_file_extension;
Это также поможет предотвратить внедрение SQL, поскольку имя файла будет единственной определяемой пользователем переменной в любых используемых запросах.
Если я выполню вышеизложенное, насколько уязвим для атаки яЯ по-прежнему?Прежде чем принять файл, я надеюсь, что я должен: 1) разрешить только jpgs и pngs, 2) проверить, что PHP говорит, что это правильный образ, 3) отключить каталог, в котором находятся изображения, от выполнения файлов .php, и 4) переименовать файл пользователя в нечтоуникальный.
Спасибо,