Опасные типы файлов, которых следует избегать на веб-сайте обмена файлами - PullRequest
4 голосов
/ 26 сентября 2011

Я делаю небольшой сайт для обмена файлами, где пользователи могут загружать контент.Недавно кто-то загрузил PHP-скрипт, который предположительно был предназначен для нанесения вреда сайту.Это заставило меня задуматься: какие типы файлов я должен блокировать для загрузки пользователями?Я уже заблокировал .exe файлы.Какие другие типы файлов могут нанести вред моему веб-сайту или его пользователям?

Этот сценарий можно просмотреть здесь.

Ответы [ 3 ]

9 голосов
/ 26 сентября 2011

Не храните файлы там, где они доступны напрямую - предоставьте доступ только через скрипт, которым ВЫ управляете. Не храните файлы, используя предоставленное пользователем имя файла - используйте имя файла, которое ВЫ генерируете (лучший вариант - сохранить сведения о файле в базе данных, включая исходное имя файла, и сохранить фактический файл, используя поле первичного ключа этой записи БД.

С этими двумя людьми люди могут загружать антиширу по своему желанию, и вероятность того, что файл будет исполнен / интерпретирован на вашем сервере, будет нулевой, потому что он никогда не окажется в состоянии, в котором он МОЖЕТ быть выполнен / интерпретирован.

5 голосов
/ 26 сентября 2011

Похоже, что скрипт отключен, пока он еще определяет функции, поэтому я не могу разобрать, что он делает.

Однако, если вы все делаете правильно, у вас должен быть файл .htaccess в каталоге «загруженных файлов» с:

Header set Content-Disposition "attachment"

Это гарантирует, что доступ к любому файлу в этом каталоге приведет к загрузке, и этот скрипт не будет запущен.

(На самом деле, еще лучше иметь файлы вне webroot и иметь php-скрипт "загрузчика" echo содержимое файла)

1 голос
/ 26 сентября 2011

Этот сценарий может быть эвфемистически описан как сценарий удаленного администрирования.

Вы всегда должны использовать белый, а не черный список.Вместо «перечисления ошибок» составьте список разрешенных типов файлов и отклоните все остальное.

Кроме того, все загруженные файлы должны быть помещены в каталог, в котором не работает обработчик PHP, или любые другие обработчики сценариев ввсе (проверьте, например, что другие системы управления контентом, написанные на PHP, делают в .htaccess для своих каталогов загрузки).

Также рекомендуется поместить загруженные файлы в отдельный поддомен, который не имеетлюбой доступ к файлам cookie основного домена, чтобы избежать атак, которые пытаются запустить код JavaScript в том же источнике, что и основной сайт (для этого недостаточно белого списка типов содержимого, поскольку известно, что некоторые браузеры угадывают тип содержимого иобрабатывать не HTML-файлы как HTML).

...