#asp.net #security
#asp.net #Безопасность
Вопрос:
У меня есть веб-сайт, где у меня также есть каталог «UserFiles», который защищен для просмотра его содержимого в браузере:
Этот виртуальный каталог не позволяет отображать содержимое в списке.
Проблема в том, что у меня здесь есть несколько файлов, которые, если вы знаете имя файла, например:
http://example.com/UserFiles/file.ppt
вы можете скачать его.
Есть ли какой-либо способ защитить это также от web.config? Или, если пользователь пытается получить к этому доступ, сделать перенаправление на страницу входа в систему?
Пожалуйста, обратите внимание, что я не использую проверку подлинности в формах, но включен пользовательский логин и проверка подлинности Windows.
Спасибо,
ОБНОВЛЕНИЕ: я попробую это на данный момент: http://www.dotnetcurry.com/ShowArticle.aspx?ID=270
Ответ №1:
Если вы все еще хотите сделать это через web.config
, ваш web.config
файл должен иметь это в httpHandlers
разделе:
<system.web>
<httpHandlers>
<add verb="*" path="*.ppt" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>
</system.web>
Это заблокирует все файлы .ppt.
Комментарии:
1. Интересно, сработает ли это, если в качестве пути указан каталог?
Ответ №2:
Когда кому-то нужно загрузить один из этих файлов, вы просто перенаправляете их на URL, аналогичный тому, который вы там указали?
Альтернативой может быть определение страницы, которая возвращает файл, в который вы затем можете поместить любые проверки разрешений, которые вы хотите. Использование этого метода также позволяет полностью переместить эту пользовательскую папку за пределы веб-папки, поэтому эти URL-адреса вообще недоступны.
например:
C:UserFiles
C:inetpubMyWebFolder
Вам просто нужно убедиться, что учетная запись пользователя, под которой запущено веб-приложение, имеет соответствующие разрешения на C:UserFiles папка.
Комментарии:
1. Привет, Крис, спасибо за ответ. К сожалению, перемещение папки потребует большого рефакторинга в коде, поэтому я пытаюсь найти альтернативу… И да, я предоставляю простые URL-адреса зарегистрированным пользователям…
2. В этом случае опция IHttpHandler, которую вы пытаетесь использовать, является единственным другим вариантом, который я могу придумать.