Могу ли я использовать подстановочные знаки в атрибуте пути местоположения web.config?

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

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

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

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

Он работает, если я отказываюсь от доступа к отдельным файлам, но это решение не покупает меня, так как я не знаю всех .xml файлов заранее.

2 ответа

Попробуйте следующее:

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

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


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

<system.webserver>
 <security>
 <requestfiltering>
 <fileextensions>
 <add fileextension=".xml" allowed="false">
 </add></fileextensions>
 </requestfiltering>
 </security>
</system.webserver>

licensed under cc by-sa 3.0 with attribution.