Задать вопрос
@XenTerSeO

Насколько опасно разрешать пользователям загружать на сервер любые файлы?

Есть сайт на ubuntu. Есть возможность всем зарегистрированным пользователям загружать любой тип файлов. Сайт находится на том же сервере, где и хранятся файлы.
Насколько опасно это может быть и как обезопасить себя от вредоносных файлов?
  • Вопрос задан
  • 772 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 4
Ivanq
@Ivanq
Знаю php, js, html, css
Очень опасно - хакер завоюет сервер на 100%. Представим, у вас сайт на PHP. Пользователь может загрузить на сервер скрипт, а потом его выполнить.
Простейший код удалит весь сайт. У себя не запускать!
@unlink($_SERVER["DOCUMENT_ROOT"]);
Ответ написан
magalex
@magalex
Архитектор распределённых систем управления
Вам могут загрузить PHPShell, после чего попрощаетесь со своим сервером :)
Обезопасить можно тем, что запретить исполнение любых файлов в директории, где хранятся загружаемые файлы. А вообще лучше запретить загрузку всех типов файлов, кроме специально разрешённых.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Если грамотно настроить - грузите что нужно.
Всё зависит от настроек сервера и того, что вы будете делать с файлами.
При чем безопасность зависит как от клиентской части, так и от серверной.
Чтобы обезопасить - не выполнять скрипты в папке с загружаемыми файлами (к примеру, отдавать все файлы с помощью Nginx из папки напрямую, минуя PHP интерпретатор). Так же нужно настроить HTTP заголовки на страницах, чтобы нельзя было загрузить файл с JS и потом подключить в iframe на странице (если, к примеру, у пользователя есть возможность вставлять iframe, для того же youtube может быть нужно), иначе получите что-то вроде хранимой XSS, только в файловой системе (хотя, собственно, какая разница где хранить).

В целом - есть целый ряд вариантов выстрелить себе в голову, так что настоятельно рекомендую пока пользоваться готовыми инструментами, где упомянутые и некоторые другие вещи предусмотрены.
Ответ написан
Комментировать
erniesto77
@erniesto77
oop, rb, py, php, js
Чтобы позволить себе такую роскошь нужно будет потратить кучу времени на предотвращение всех возможных угроз. Сейчас все сразу не перечислить. Основная проблема думаю в том, чтобы запретить исполнение файлов. Как вариант каждый файл можно хранить запакованным в архив, тогда исполнить его не удастся, вариантов куча надо сидеть думать...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы