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

У меня есть каталог "d:/resources/xxxxx/file-name.xxx", в котором хранятся типы файлов: .png, .xml, .pdf, к которым обращается веб-сайт. В IIS настроен виртуальный каталог, «ресурсы», который указывает на это расположение на жестком диске, чтобы разрешить доступ к изображениям .png через HTTP-запрос, но я ссылаюсь на файлы .pdf и .xml по их жесткому диску. расположение. Эти файлы являются частью рабочего процесса, поэтому все они должны оставаться в своей текущей структуре каталогов.

IIS необходимо разрешить обслуживать изображения .png, но я не хочу, чтобы ему разрешалось обслуживать файлы .pdf или .xml в целях безопасности.

Я попытался настроить обработчик http, который работал бы нормально, но я не могу сделать путь достаточно конкретным. Если я установил «/resources/*», то мне нужно вручную вывести разрешенные типы файлов, и это становилось немного шатким. Я не могу указать путь к «*.pdf», потому что другим каталогам должен быть разрешен доступ к их файлам .pdf.

Я просто ищу прямой способ ограничить доступ, если кто-то попытается перейти на «www.mysite.com/resources/dir/mypdf.pdf» или «.../myxml.xml», но все же разрешить . png и все другие потенциальные типы файлов, которые будут обслуживаться.

Кроме того, пожалуйста, дайте мне знать, если я все делаю неправильно.


person StronglyTyped    schedule 30.04.2012    source источник
comment
На мой взгляд, лучший способ - хранить их в другом месте. Потому что все разрешения или файлы конфигурации могут быть потеряны. Бывает.   -  person Denys Séguret    schedule 30.04.2012


Ответы (2)


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

<location path="/resources">
    <system.webServer>
        <handlers>
            <add name="PdfForbiddenHandler" path="*.pdf" verb="*" type="System.Web.HttpForbiddenHandler" resourceType="File" preCondition="integratedMode" />
            <add name="XmlForbiddenHandler" path="*.xml" verb="*" type="System.Web.HttpForbiddenHandler" resourceType="File" preCondition="integratedMode" />
        </handlers>
    </system.webServer>
 </location>
person JamieSee    schedule 30.04.2012

Чтобы использовать пользовательский интерфейс диспетчера IIS (7.x, классический режим):

  1. Разверните свой сайт и выберите каталог «ресурсы».
  2. В Просмотре функций дважды нажмите Сопоставления обработчиков.
  3. В сетке найдите сопоставление модуля с именем «StaticFile», дважды щелкните этот элемент;
  4. Введите разрешенное расширение имени файла, например. *.png, *.gif и т. д.
  5. Нажмите «ОК».

введите здесь описание изображения

person Kibria    schedule 30.04.2012