Могу ли я использовать подстановочные знаки в атрибуте пути расположения web.config? - PullRequest
10 голосов
/ 27 октября 2009

В IIS 7 я пытаюсь запретить доступ ко всем файлам с расширением .xml для всех пользователей.

Я попробовал следующую настройку в моем файле web.config:

<location path="*.xml">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

Но при получении любого файла возникает внутренняя ошибка сервера.

Это работает, если я отказываю в доступе к отдельным файлам, но это решение не приносит мне большой выгоды, так как я заранее не знаю все XML-файлы.

Ответы [ 2 ]

8 голосов
/ 27 октября 2009

Попробуйте это:

<configuration>
    <system.web>
        <httpHandlers>
            <add path="*.xml" verb="*" 
             type="System.Web.HttpNotFoundHandler" />
        </httpHandlers>
    </system.web>
</configuration>

Кстати, вы можете альтернативно хранить все ваши xml-файлы в каталоге App_Data . Хранение файлов любого типа в этом каталоге не будет передано в Интернет.

5 голосов
/ 06 ноября 2009

Другой способ - использовать фильтр запросов:

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions>
        <add fileExtension=".xml" allowed="false" />
      </fileExtensions>
    </requestFiltering>
  </security>
</system.webServer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...