Риски безопасности или проблемы с использованием контроля FileUpload на asp.net - и предлагаемые решения

Мне нужно создать утилиту, с помощью которой пользователь сможет загружать отдельные или несколько файлов с использованием элемента управления asp.net FileUpload Server.

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

  1. Как запросить у пользователя вирусы и прекратить загрузку
  2. Как проверять файлы на вирусы во время загрузки

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

Любой ответ для этого наиболее заметен.

заранее спасибо

2 ответа

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

Прагматичный способ предотвращения проблем, связанных с загрузкой вредоносных файлов, заключается в ограничении типов файлов, которые будет принимать ваш сервер, путем проверки PostedFile.ContentType имущество. Это идентифицирует MIME-тип. Лучше всего исключить такие вещи, как .exe и, конечно же, есть проблемы с макросами и автоматизацией VBA в файлах, сгенерированных MS Office, таких как .doc а также .xls,

Здесь есть "как": как ограничить тип файла в элементе управления FileUpload

Зависит от моего опыта разработки систем общего доступа к файлам, проверка расширений файлов проста, но недостаточно, в iis 6 была ошибка, из-за которой хакеры могли обойти эти проверки, добавив ";" к части имени файла и загрузите их shell-скрипты как изображение!

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

C:\ хостинг-пространства \ MyUser \ mydomain.com \ WWW-корень \

Ваш код должен сохранять файлы в:

C:\ хостинг-пространства \ MyUser\mydomain.com\USERUPLOADs\

по этой причине пользователь iis не может иметь прямой доступ к загруженному вирусу или шелл-скрипту!

и использовать файл.aspx для косвенного чтения файлового потока.

<img src="/loadfiles.aspx?name=?????" />

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

и другое решение, которое я сам не тестировал, - это использовать web.congif, чтобы избежать разрешения запуска сценария из папки загрузки:

<location path="upload">
<system.webServer>
    <handlers accessPolicy="Read" />
</system.webServer></location>
Другие вопросы по тегам