Как запретить загрузку исполняемых (вредных) файлов на сервер?
Доброго времени суток всем! Делаю проект на Node.js. В проекте пользователи могут загружать на сервер файлы. Как не ограничивать пользователя определёнными форматами, а запретить только загрузку исполняемых и других вредных файлов? Пример сообщения ВК. Там можно загружать все кроме исполняемых файлов.
Более простой вариант, запрет по расширению файлов.
Но этот вариант пролетает по пункту "не ограничивать пользователя определёнными форматами"
Более сложный, использовать что то подобное на virustotal.com api, тогда загружаем все подряд файлы и потихоньку обрабатываем вирустоталом или другим сервисом
AntoxaVolkov, тип только один. Расширений у него может быть несколько, но, по большому счету, кто будет закачивать экзешник с экзотическим расширением? Только потенциальный крякер? Ни, так этому и не жалко влепить по фейсу интерфейсом и дать отлуп только после загрузки.
AntoxaVolkov, зачем перечислять все типы файлов, их же миллионы, и ещё куча не выгаданных, ведь это всего навсего такая абстракция, если можно описать только те что необходимы, а остальные исключить, по тому же принципу как и устроена проверка на недопустимое превышение веса файла например, плюс ко всему не лишним будет чтобы скрипт заглядывал в само содержимое файла, допустим у картинки в формате png в начале файла всегда расположено примерно следующее, откройте картинку в блокноте, и вы там увидите тоже код:
Trotilla, но это тоже специфично со стороны пользователя загружать файл без расширения. Если честно даже вспомнить не могу ситуацию, где загружал бы не исполняемый файл без расширения ... можно пример?)
Trotilla, а как вы себе представляете сценарий эксплуатации такой уязвимости, даже если вам удалось загрузить ELF на сервер?
Кто это его вам даст запустить, под Линуксом-то? И права на исполнение ему назначит? А уж если все это окажется реальным - так и bash-скрипт ничуть не хуже может отработать, смысл фильтрации напрочь теряется...
Trotilla, не ровно. Права на исполнение под виндами нужно специально отбирать настройками, под юниксами же их по умолчанию не будет.
В остальном - не берусь судить, что там будет под веб-сервером на виндах, поскольку искренне полагаю таковой сервер бессмысленным кадавром априори и практического опыта борьбы с ним не имею.
Trotilla, прочитал ваш пост, прочитал пост Adamos, не стыкуется =(
На windows на сколько мне известно любое расширение не получится задать, чтобы исполнить файл
Trotilla, Если честно, я потерял цель дальнейшего разговора, больше склоняюсь к варианту, что под linux нужно отдельно права выставить на файл, чтобы его исполнить.
Да и ТСу, такой вариант не подходит, как я понял, ждать загрузки файла нельзя. - Тогда согласен с комментаторами про сигнатуру. На том же js, на стороне клиента, можно читать файл по байтно
JRK_DV, под Windows пользователи также сами себе загружают и запускают зловреды.
Если они полностью отключают защиту браузера и игнорируют предупреждения системы
;)