2010-08-01 641 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