Как защититься от взлома при загрузки файлов на сервер?

Статус
В этой теме нельзя размещать новые ответы.

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
Делаю загрузку файлов на PHP. Загрузка доступна всем пользователям сайта. Как защититься от взлома при загрузки файлов на сервер? Давно читал, что нужно проверять файлы не по расширению, а по каким-то другим признакам. Поделитесь возможностями решения данной проблемы. :)

p.s. Загрузить и обработать файл я могу.
 
На нормально настроеном сервере достаточно проверки по расширению и запрет на загрузку .htaccess.
 
На нормально настроеном сервере достаточно проверки по расширению и запрет на загрузку .htaccess.


А при этом общепринятые движки типа ДЛЕ могут быть как медвежья помошь при пыпытках сделать сервер безопасным и защищеным от взлома?

А то там периодически дырки заделывают + много директорий на разрешенных на все правах:-]
 
Делаю загрузку файлов на PHP. Загрузка доступна всем пользователям сайта. Как защититься от взлома при загрузки файлов на сервер? Давно читал, что нужно проверять файлы не по расширению, а по каким-то другим признакам. Поделитесь возможностями решения данной проблемы. :)

p.s. Загрузить и обработать файл я могу.
 
ТС, смотря что могут пользователи загружать. Если только картинки, то проверяй ф-циями imagecreatefromgif, imagecreatefromjpeg и т.д.
Переименовывай их желательно в случайное название, например в md5 функцию от имени файла + случайное число. И давать доступ к загруженным файлам не напрямую, а через скрипт, чтоб люди не знали реального расположения файла не сервере.
 
На нормально настроеном сервере достаточно проверки по расширению и запрет на загрузку .htaccess.
Даже на нормальнонастроенном сервере находятся идиоты, делающие, к примеру, include вместо readfile.
 
ТС, смотря что могут пользователи загружать. Если только картинки, то проверяй ф-циями imagecreatefromgif, imagecreatefromjpeg и т.д.
Переименовывай их желательно в случайное название, например в md5 функцию от имени файла + случайное число. И давать доступ к загруженным файлам не напрямую, а через скрипт, чтоб люди не знали реального расположения файла не сервере.

а, кстати да, и картинки чтобы были не прямые как загружено, а прогнанные через GD2, чтобы никакого php-кода внутри жпегов и гифов не оставалось или ещё какого текста, который можно куда-нибудь злостно применить. И доступ к файлам (если он будет) не сразу давать пользователям, а через проверку вручную модератором или администратором сайта.

Даже на нормальнонастроенном сервере находятся идиоты, делающие, к примеру, include вместо readfile.
это от движка зависит, если у двига проблемы с безопасностью - его никакая фильтрация аплоада не спасёт.
 
А какой смысл проверять с помощью функций imagecreatefrom*? PHP-код, к примеру, легко может быть встроен и в картинку. Так же, как и в изменении названия файла особого смысла нет (разве что расширения, но это соответствует следующему моему предложению).
Единственное правило - никогда не выполнять то, что пришло от пользователя.
 
А какой смысл проверять с помощью функций imagecreatefrom*? PHP-код, к примеру, легко может быть встроен и в картинку. Так же, как и в изменении названия файла особого смысла нет (разве что расширения, но это соответствует следующему моему предложению).
Единственное правило - никогда не выполнять то, что пришло от пользователя.

Смысл в том что из картинки будет создана новая, а если там не картинка а код ПХП например то оно новую создать не сможет и выдаст ошибку и картинка загружена не будет
 
Если тебе будут заливать юзеры картинки то отфильтруй их

/* Проверяем изображение ли это */
$s_img=@getimagesize($_FILES['image']['tmp_name']);
if( $s_img[2] !==2 ) $err.="Только форматы JPG или JEPEG !<br>";
else
{
Делаем ресайз с коэффициентом 1
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху