Страницы

Поиск по вопросам

пятница, 13 марта 2020 г.

Загрузка файла на сервер - баги, уязвимости

#php #javascript #html #безопасность


На моем сайте есть форма для загрузки файла, в которой у пользователя есть возможность,
написав комментарий, прикрепить файл. Загрузку файла я не контролирую: нет ограничения
по размеру, по типу и т.п. 

Что может злоумышленник сделать с такой загрузкой файла, где нет ни каких ограничений? 
Какие есть еще защиты кроме ограничения по размеру, типу?
    


Ответы

Ответ 1



Злоумышленник при заливке произвольного файла к вам на сервер в принципе может все что угодно. Файл может быть скриптом php или другим видом cgi и дать злоумышленнику полный доступ на ваш хостинг. А может быть каким нибудь скриптом/выполнимым файлом, который сработает в браузерах ваших пользователей. Защита: Проверять тип файла и не по расширению, а по внутреннему содержимому. Если это картинки то в браузеры к пользователям они должны попадать только в виде Скрипт загружающий файлы должен исключить наличие символов / и .. в именах файлов. Что бы через него нельзя было залить файл в произвольную папку на сервере Папка в которую заливаются файлы должна быть защищена от выполнения скриптов из нее. Для этого надо в .htaccess в этой папке (для apache) написать следующее: php_flag engine 0 RemoveHandler .php AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp Options -ExecCGI -Indexes

Ответ 2



Самое опасное, что может произойти - удаленное выполнение кода. Это означает, что злоумышленник может загрузить свой скрипт и запустить его. Что будет в скрипте зависит только от фантазии злоумышленника. Я вижу два способа, как убрать данную уязвимость: Проверять загружаемый файл. Если через Вашу форму будут загружать изображения, то необходимо проверить, является ли загружаемый файл изображением, и т.п. Убрать права на выполнение файлов. Таким образом злоумышленник сможет спокойно просматривать изображения, но при этом у него не будет возможности выполнить, например, php скрипт.

Комментариев нет:

Отправить комментарий