是否可以在Web.config中配置一个位置以仅允许本地连接

时间:2010-02-25 21:38:22

标签: asp.net web-config

我在ASP.Net应用程序中有一个页面(实际上它的Mvc但不重要),我想只允许从本地机器连接到这个页面。我很乐意在Web.config中做这样的事情:

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

我知道这可以通过简单检查后面的页面代码(或控制器)和its even possible just with IIS configuration但我会喜欢Web.config配置,因为这将是我认为最优雅的解决方案。有人知道这是否可行?

5 个答案:

答案 0 :(得分:30)

您可以要求IIS通过Web.config中的IP地址限制对资源的访问:

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

More info

编辑:正如Mike在下面的评论中指出的那样,这需要安装IP和域限制模块。谢谢迈克!

答案 1 :(得分:4)

这不是您要求的,但您可以指定用户 本地计算机。我无法想象这是实用的,除非你想要授权的用户数量很少。

<location path="resources">
  <system.web>
    <authorization>
      <allow users="LOCALMACHINENAME\UsernameOfTrustedUser"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

答案 2 :(得分:2)

  1. 为计算机创建非DNS别名,即“PrivateHostName”。
  2. 在本地主机文件中设置此值以指向127.0.0.1。
  3. 为网站设置一个(IIS)主机标头,使其仅响应处理“PrivateHostName”的请求。
  4. 对于所有本地呼叫,请使用私有主机名。
  5. 远程客户端将无法解析主机名。

    您可以使用绑定到虚拟网络适配器的专用IP地址来保护它,该虚拟网络适配器实际上不会响应外部请求。

答案 3 :(得分:1)

如果您想指定一系列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>

答案 4 :(得分:0)

您可以创建自己的配置部分,该部分将成为web.config的一部分,然后使用该设置来控制global.asax Session_Start中的行为。