Что заменяет .htaccess на сайтах IIS / ASP.NET?

На сайтах Apache / PHP, если я хочу разместить конфиденциальный файл в папках своего сайта, я помещаю в эту папку файл .htaccess, чтобы пользователи не могли загрузить конфиденциальный файл.

Существует ли аналогичная практика для сайтов IIS / ASP.NET, т. е. если у меня есть учетная запись общего хостинга и нет доступа к серверу IIS. Могу ли я сделать это, например, в web.config?

например файл ASPNETDB.MDF, который конфигурация ASP.NET поместила в каталог App_Data. Я бы предположил, что он защищен по умолчанию, но где я могу изменить настройки для этой папки, как я мог бы с файлом .htaccess?


person Edward Tanguay    schedule 25.11.2008    source источник


Ответы (5)


Внутри ASP.Net web.config вы можете настроить местоположения для повышения безопасности определенных файлов и папок. Кроме того, вы можете удалить все глаголы из этих каталогов:

<location path="Secret" allowOverride="false">
  <system.web>
    <authorization>
      <deny users="*" />
    </authorization>
    <httpHandlers>
      <remove path="*.*" verb="*"/>
    </httpHandlers>
  </system.web>
</location>

Я использовал только авторизационную часть этого фрагмента, и она отлично работает. Обработчик должен дополнительно заблокировать его, и использование фильтра ISAPI сможет внести в него последние штрихи.

person JamesEggers    schedule 25.11.2008

Что ж, если у вас есть доступ к настройкам IIS, UrlScan может помочь. Для IIS 7 может очень помочь фильтрация запросов.

http://learn.iis.net/page.aspx/473/using-urlscan

http://learn.iis.net/page.aspx/143/how-to-use-request-filtering/

person Lex Li    schedule 29.11.2008

С помощью web.config можно делать некоторые вещи, например определять параметры безопасности и т. Д. В других случаях вам нужно использовать HttpModules или HttpHandlers, посмотрите здесь: http://msdn.microsoft.com/en-us/library/aa719858(VS.71).aspx

Если нет, вы можете найти другой ISAPI, но в этом случае вам понадобится доступ к IIS. Например, ISAPI для эмуляции rewrite mod apache:

http://www.codeplex.com/IIRF

Другой вопрос, да, ASPNETDB.MDF в APP_Data защищен нормально (это зависит от вашего администратора). Чтобы изменить путь, измените строку подключения.

person netadictos    schedule 25.11.2008
comment
Конечно, с 2008 года ответ изменился. В настоящее время .NET предоставляет больше возможностей перенаправления. - person netadictos; 06.10.2011

Есть два случая:

  • Если сервер использует IIS7, то для всех файлов доступны эквивалентные функциональные возможности с использованием подхода web.config.
  • Если сервер использует IIS6 или более раннюю версию (и на данный момент это наиболее вероятный случай для общего хостинга), то это большая проблема. Если вы можете заставить все свои запросы проходить через обработчик ASP.NET (который обычно требует доступа к серверу для настройки), тогда снова будет работать подход web.config, но в противном случае вам понадобятся другие инструменты и отзывчивый провайдер хостинга. . Только по этой причине, вероятно, нужен IIS7 ...

Тем не менее, для asp.net есть файлы, которые в любом случае защищены по умолчанию - файлы в app_data, как уже упоминалось, плюс определенные типы файлов (например, .config). Кроме того, можно было бы ожидать, что приличный хост предоставит каталог, который недоступен через Интернет - наш предлагает частную и веб-папку, доступную через FTP, но только содержимое последней через Интернет.

person Murph    schedule 25.11.2008

Согласно [documentation on Application Folders][1], IIS не будет обслуживать запросы к содержимому, хранящемуся в папке /app_data, хотя ваше приложение может читать эти файлы и взаимодействовать с ними.

ASP.NET распознает определенные имена папок, которые можно использовать для определенных типов содержимого. В следующей таблице перечислены зарезервированные имена папок и типы файлов, которые обычно содержатся в папках.

Примечание

Содержимое папок приложения, за исключением папки App_Themes, не обслуживается в ответ на веб-запросы, но к нему можно получить доступ из кода приложения.

person Zhaph - Ben Duguid    schedule 06.02.2010