Зависит от моего опыта разработки систем общего доступа к файлам, проверка расширений файлов проста, но недостаточно, в iis 6 была ошибка, из-за которой хакеры могли обойти эти проверки, добавив «;» в часть имени файла и загрузите свои shell-скрипты в виде изображения!
Лучший способ - сохранить загруженные пользователем файлы на одну папку выше корневой папки сайта, например, если папка вашего сайта:
C: \ хостинг-пространства \ MyUser \ mydomain.com \ WWW-корень \
ваш код должен сохранять файлы в:
c: \ hosting-space \ myuser \ mydomain.com \ USERUPLOADs \
по этой уловке пользователь iis не может иметь прямой доступ к загруженному вирусу или shell-скрипту!
и использовать файл .aspx для косвенного чтения файлового потока.
<img src="/loadfiles.aspx?name=?????" />
преимуществ много, например, вы можете написать счетчик статистики или проверить сеанс пользователя или избежать межсайтового доступа к вашим пользовательским файлам, но когда вам понадобятся некоторые навыки кодирования, чтобы добавить поддержку возобновления загрузки для объединенных файлов, следует позаботиться тайм-аута сценария и ...
и другое решение, которое я сам не тестировал, - это использовать web.congif, чтобы избежать разрешения запуска сценария из папки загрузки:
<location path="upload">
<system.webServer>
<handlers accessPolicy="Read" />
</system.webServer></location>