Можно ли настроить расположение в Web.config, чтобы разрешить только локальные подключения - PullRequest
19 голосов
/ 26 февраля 2010

У меня есть страница в приложении ASP.Net (его Mvc на самом деле, но не важно), и я хотел бы разрешить подключения к этой странице только с локальной машины. Я хотел бы сделать что-то подобное в Web.config:

<location path="resources">
  <system.web>
    <authorization>
      <allow ips="local"/>
    </authorization>
  </system.web>
</location>  

Я знаю, что это возможно с простой проверкой кода страницы позади (или контроллера), а это возможно даже при конфигурации IIS , но я хотел бы получить конфигурацию Web.config, так как это было бы наиболее элегантное решение на мой взгляд. Кто-нибудь знает, возможно ли это?

Ответы [ 5 ]

30 голосов
/ 24 мая 2011

Вы можете попросить IIS ограничить доступ к ресурсу по IP-адресу из Web.config:

<location path="resources">
  <system.webServer>
    <security>
      <ipSecurity allowUnlisted="false">
        <clear/>
        <add ipAddress="127.0.0.1"/>
      </ipSecurity>
    </security>
  </system.webServer>
</location>

Подробнее

РЕДАКТИРОВАТЬ: Как отметил Майк в комментарии ниже, для этого требуется установить модуль IP и ограничения домена. Спасибо, Майк!

4 голосов
/ 26 февраля 2010

Это не то, что вы просили, но вы можете указать пользователей из локальной машины. Я не могу представить, что это практично, если только вы не хотите авторизовать небольшое количество пользователей.

<location path="resources">
  <system.web>
    <authorization>
      <allow users="LOCALMACHINENAME\UsernameOfTrustedUser"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>
2 голосов
/ 01 апреля 2010
  1. Придумайте псевдоним, отличный от DNS, для машины, то есть «PrivateHostName».
  2. Установите это значение в локальном файле хостов, чтобы оно указывало на 127.0.0.1.
  3. Установите заголовок узла (IIS) для веб-сайта таким образом, чтобы он отвечал только на запросы по адресу «PrivateHostName».
  4. Для всех локальных вызовов используйте имя частного хоста.

Удаленные клиенты не смогут разрешить имя хоста.

Вы можете защитить его, используя выделенный IP-адрес, привязанный к виртуальному сетевому адаптеру, который фактически не будет отвечать на внешние запросы.

1 голос
/ 18 июня 2015

Я также нашел это полезным, если вы хотите указать диапазон IP-адресов. Вы можете добавить следующий блок кода к вам web.config

<system.webServer>
    <security>
        <ipSecurity allowUnlisted="false">
            <clear/>
            <add ipAddress="95.110.115.0" subnetMask="255.255.255.0"/>  
            <!--blocks range 95.110.115.0 to 95.110.115.255-->    
            <add ipAddress="95.110.0.0" subnetMask="255.255.0.0"/>      
            <!--blocks range 95.110.0.0 to 95.110.255.255-->    
            <add ipAddress="95.0.0.0" subnetMask="255.0.0.0"/>          
            <!--blocks range 95.0.0.0 to 95.255.255.255-->  
        </ipSecurity>
    </security>
</system.webServer>
0 голосов
/ 26 февраля 2010

Вы можете создать свой собственный раздел конфигурации, который будет частью вашего web.config, а затем использовать этот параметр для управления поведением в global.asax Session_Start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...