2013-01-22 50 views
-1

我有asp.net的web應用程序,我希望人們只能從我的公司網絡(LAN)使用它,我該如何做到這一點?ASP.Net僅在局域網上可用的網頁

+0

大多數公司使用NAT盒子,外部用戶無法訪問其Intranet上的機器。如果你在NAT後面,詢問網絡管理員 – nunespascal

回答

3

可以

  • 使用防火牆來阻止勝負連接!這是最安全的。
  • 使用登錄頁面,只允許註冊用戶。
  • 較不安全的方法是檢查您應用程序內部每個連接的ips。

要檢查IPS上的BeginRequest,你讀的客戶端IP,則檢查其in a range of the private networs或者你把你喜歡的其他IP,如果它不是你只是關閉連接:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    if(!IsPrivateNetwork(MyCurrentContent.Request.ServerVariables["REMOTE_ADDR"]) 
    { 
     HttpContext.Current.Response.TrySkipIisCustomErrors = true; 
     HttpContext.Current.Response.StatusCode = 403; 
     HttpContext.Current.Response.End(); 
     return ;  
    } 
} 


public bool IsPrivateNetwork(string sMyIpString) 
{ 
    long TheIpTranslate = AddressToNum(sMyIpString); 

    if (TheIpTranslate >= 0) 
    { 
     // 192.168.0.0 192.168.255.255 
     if (TheIpTranslate >= 3232235520 && TheIpTranslate <= 3232301055) 
      return true; 

     // 10.0.0.0 10.255.255.255 
     if (TheIpTranslate >= 167772160 && TheIpTranslate <= 184549375) 
      return true; 

     // 172.16.0.0 172.31.255.255 
     if (TheIpTranslate >= 2886729728 && TheIpTranslate <= 2887778303) 
      return true; 
    } 

    return false; 
} 

public long AddressToNum(string cAddress) 
{ 
    IPAddress MyIpToCheck = null; 

    if (IPAddress.TryParse(cAddress, out MyIpToCheck)) 
    { 
     return AddressToNum(MyIpToCheck); 
    } 
    else 
    { 
     return -1; 
    } 
} 


public long AddressToNum(IPAddress Address) 
{ 
    byte[] b = BitConverter.GetBytes(Address.Address); 

    if (b.Length == 8) 
     return (long)(((long)16777216 * b[0]) + ((long)(65536 * b[1])) + ((long)(256 * b[2])) + b[3]); 
    else 
     return 0; 
}