2010-08-01 241 views
2

我有一個由多個.aspx頁面組成的ASP.NET應用程序。我希望其中一個.aspx頁面只能通過一組特定的IP訪問。這可能嗎?如何爲IIS中的單個URL設置IP白名單

我知道你可以在網站級別的IP白名單,但你可以在應用程序中的單個URL的IP白名單?

回答

3

下資源演示瞭如何檢測客戶端IP在ASP.NET:

http://bytes.com/topic/asp-classic/answers/439176-how-get-clients-ip-address-asp-net

一旦你的IP,init事件期間從您所選擇的存儲機制加載您的白名單,也許(如果在一個頁面),如果IP不匹配,像這樣如果不是在一個頁面響應(使用HttpContext.Current.Response

if (!mySafeIpList.Contains(clientIP)) 
{ 
    Response.Clear() 
    Response.StatusCode = (int)HttpStatusCode.Unauthorized 
    Response.End() 
} 

或者,只是單純的重定向到一個有效的頁面:

Response.Redirect("~/Head-Fake.aspx") 

我希望這會有所幫助。

1

您可以隨時在自己的應用程序中檢查自己的白名單中的Request.ServerVariables [「REMOTE_HOST」]。

3

不幸的是,我很確定你不能通過IIS爲單個頁面執行它(如果你想驗證,請查找Serverfault.com以獲取更多細節),但是如果你想以編程的方式執行它,你可以勾選Application_BeginRequest在你的global.asax文件中。根據您的限制檢查請求URL和請求IP地址,並且只允許請求在通過時繼續。

+1

+1:用於在'Global.asax'中實現過濾器的建議。 – kbrimington 2010-08-01 01:08:17