我是在学校做VOD视频点播的,在局域网中注册IP可以访问,现在要禁止这个未注册的IP访问Web,不是进入Web以后再判断IP!

解决方案 »

  1.   

    倒,你发的贴不少啊看的蝈蝈的文章,你看看
    这个问题可以进一步划分为两个问题:
    1、如何控制iis的IPDeny;
    2、由于是WEB方式,默认的WEB帐户权限很低,不会有上面操作的权限,如何处理。
     
    第一个问题:微软的msdn中给出了三种方法:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/setting_ip_security_using_system_directoryservices.asp
    这里给出了两种。其实都是使用 System.DirectoryServices 类
    后一种竟然有这样的要求:
    This example requires Windows Server 2003 Service Pack 1, which contains fixes that allow System.DirectoryServices to enumerate list properties.
    晕倒,当时就是没看到这条,这一种调试了很久才发现有这个限制。
    Windows Server 2003 Service Pack 1 那要啥时候才能出来呀。等不及了。放弃这种方案。另外一个在:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/ref_prog_iaorefiipsecd.asp
    代码是 VBScript 写的
    其实有个更好的在:
    http://www.thecodeproject.com/csharp/IISWMI.asp
    这里其实是使用 System.DirectoryServices。同时通过使用 反射 来避免上面必须 win2003 sp1 才可以使用的尴尬。
    具体代码请看那个网页,我就不详细说了。我就是采用的这个。
    第二个问题:当然,你可以给 WEB 的运行帐户非常高的权限来解决这个问题。
    我们这里要说的不是这种不安全的,而是只给必要的权限。这就需要 身份模拟(Impersonation)了。有关在ASP.NET应用程序中使用身份模拟的文章请看以下文章:
    http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/impersonation.mspx或者你查 msdn 中 WindowsImpersonationContext 类的说明。
    或是是 web.config 中 <identity impersonate="true" /> 这样一节的相关信息至于如何新设一个帐户,这个帐户只有对iis的IPDeny有读写权限。
    汗颜,我也不会。我是用了一个更高权限的帐户。通过设置 Web.config 的 identity 节来实现的。
    通过设置: impersonate="true" 
    这样,用户身份的认证交给IIS来进行。
    当允许匿名登录时,IIS将一个匿名登录使用的标识(缺省情况下是IUSR_MACHINENAME)交给ASP.NET应用程序。
    当不允许匿名登录时,IIS将认证过的身份标识传递给ASP.NET应用程序。ASP.NET的具体访问权限由该账号的权限决定。
    这时候我使用不允许匿名登录,然后使用一个非常高权限的帐户登录,就可以操作了。这方面的文章还可以参考:
    http://www.microsoft.com/china/technet/security/guidance/secmod38.mspx
      

  2.   

    iis管理器-->目录安全性-> ip地址域名访问
      

  3.   

    在IIS中,右键某个站点或虚拟目录-》属性-》目录安全性-》IP地址及域名限制-》编辑
      

  4.   

    你的服务器是用什么作的?iis?如果是iis的话在internet服务管理器里就可以设置,在那个目录安全性的ip地址及域名限制里。当然你也可以用防火墙来设置。
    如果你是linux、unix系统的apache,那么可以用防火墙来设置,比如ipfw