Я создаю небольшое веб-приложение, которое позволит зарегистрированному пользователю загружать фотографии продукта. Я пытаюсь построить-это-право, и после некоторых наивных реализаций в прошлом решил добавить все загруженные материалы в мою общую папку.Как обслуживать загруженные пользователем изображения?
\app (public folder)
-\index.php
\includes
\config
\uploads
Это могло бы привести к тому, что злоумышленнику удалось загрузить файл PHP, который не был бы доступен или обслуживался сервером.
Это, как говорится, как я могу обслуживать эти фотографии на веб-странице? Каков наилучший способ сделать это? Раньше я использовал файл getImage.php, который использовал бы ID-параметр (и хэш некоторого сгенерированного значения, чтобы не допустить, чтобы пользователи просто угадали идентификаторы), которые выглядели бы как «getImage.php? Id = 555 & c = 44j54k3h5» , Сервер захватывает информацию об изображении в БД (реальный путь) и загружает содержимое, перестраивает заголовок и отправляет изображение.
Есть ли проблемы с безопасностью в отношении этого метода? Есть ли способ сделать его красивее? Будет ли правило перезаписи htaccess, которое ищет /images/imagename.jpg и отправит их в файл getImage.php, добавьте дыры безопасности? Любые рекомендации по передовым методам будут высоко оценены.
Какие типы проверок безопасности вы делаете в файлах по мере их загрузки? –
Ну, я еще не построил его, я хотел удостовериться, что сначала не заметил какой-то огромный шаг. Я буду проверять расширения и оттуда, чтобы убедиться, что они представляют собой изображение, ища их размеры, используя getimagesize(), поскольку это, кажется, обычный способ сделать это ... Этого достаточно? – Gazillion
'getimagesize()' довольно медленно, и проверка расширения файла не является доказательством дурака. Я использую класс загрузки изображений, который проверяет тонну разных вещей, чтобы убедиться, что файл не является malicios. Позвольте мне посмотреть, смогу ли я его найти ... –