С точки зрения безопасности, что я должен делать, когда разрешаю пользователям загружать файлы? - PullRequest
0 голосов
/ 04 января 2012

Я разрешаю пользователю загружать файл xml.Что я должен делать с точки зрения безопасности?Я хочу запретить пользователю загружать более трех раз в день.Я ищу любые предложения по вопросам безопасности.

Ответы [ 4 ]

2 голосов
/ 04 января 2012
  1. Базовая проверка работоспособности для размера файла
  2. Избегайте проверки с использованием DTD или XSD. Если необходимо, обязательно прочитайте о «XML-бомбах» . Кроме того, XSD могут быть загружены из Интернета. Злоумышленник может ввести URL-адрес XSD, который загружается вечно, что приводит к DOS
  3. Проверьте XML на основе ваших бизнес-правил и УДАЛИТЕ его с жесткого диска, если он не пройдет проверки.
  4. Если вы сохраняете файлы на своем сервере, убедитесь, что у каталога нет разрешений на выполнение
  5. Рекомендуется переименовать файл в произвольное имя, поэтому, даже если файл будет «abc.xml», он будет сохранен как abc-433fdsadf3234234.xml на жестком диске.
  6. НЕ разрешать пользователю загружать файл, который он загрузил, по анонимному URL. Если вы можете, предотвратить загрузку загруженных файлов. Если вы не можете, используйте одноразовый домен или обслужите файл, используя IP-адрес. Это сделано для предотвращения ошибок отслеживания контента. Даже если вы установите тип контента, некоторые браузеры могут быть обмануты, думая, что документ - это HTML. Это позволяет злоумышленнику вставить код JavaScript, который может быть выполнен браузером.

РЕДАКТИРОВАТЬ: Еще немного информации о нюхании типа контента

Допустим, злоумышленник загружает файл XML, содержащий HTML в первых нескольких строках. Когда пользователь загружает этот XML, можно заставить браузер думать, что этот XML является HTML.

После того, как вы обманули браузер, злоумышленник может выполнить JavaScript в браузере пользователя. Простым примером может быть кража куки сессии.

Собрав все вместе, вот как атака работает - 1. Злоумышленник загружает XML, содержащий код JavaScript 2. Атакующий отправляет ссылку на скачивание другому пользователю, который является жертвой 3. Атакующий теперь может запускать javascript в браузере жертвы и красть его куки

Чтобы предотвратить это: a) проверьте XML для вашей схемы, b) не разрешайте пользователю загружать загруженные файлы, c) обслуживайте файл с IP-адреса или домена, отличного от вашего обычного домена, - так что куки не могут быть украдены. Вы можете прочитать подобную информацию здесь - https://security.stackexchange.com/questions/8587/how-can-i-be-protected-from-pictures-vulnerabilities

2 голосов
/ 04 января 2012

Основные шаги:

  1. Требовать от пользователей иметь учетную запись и войти в систему, прежде чем разрешать им загружать любые файлы
  2. Подсчитайте количество файлов, которые они загружают каждый день
  3. Не разрешать им загружать другой файл, если они достигли предела.

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

1 голос
/ 04 января 2012
  1. Ограничение размера файла, который они могут загружать (снижает риск DDOS в службе)
  2. Запустите процедуру проверки перед использованием (снижает риск DDOS при использовании неверного файла)
  3. Требовать аутентификацию в обработчике выгрузки (снижает риск появления нежелательных файлов)
  4. Установить ограничение на количество времени, которое может занять загрузка (это снижает риск DDOS в службе)

В идеале, если вы ожидаете xml-файл определенной схемы, проверьте, соответствует ли представленный файл этой схеме, а не только как xml, и отклоните его, если это не так.

Лишь несколько, чтобы вы начали.

1 голос
/ 04 января 2012

Вам нужно как-то идентифицировать своих пользователей, у вас обычно есть два способа:

  • с использованием идентификатора сеанса (по умолчанию хранится в файле cookie). Это можно легко обойти, если пользователь удалит свои куки
  • путем аутентификации вашего пользователя.

Когда ваш пользователь идентифицирован, вы можете расширить метод действия контроллера с помощью бизнес-логики, чтобы проверить, сколько раз этот пользователь загружал файл. А остальное может быть таким же, как в следующей статье о том, как загружать файлы в asp.net mvc .

...