我有一个由多个.aspx页面组成的ASP.NET应用程序。我希望其中一个.aspx页面只能通过一组特定的IP访问。这可能吗?如何为IIS中的单个URL设置IP白名单
我知道你可以在网站级别的IP白名单,但你可以在应用程序中的单个URL的IP白名单?
我有一个由多个.aspx页面组成的ASP.NET应用程序。我希望其中一个.aspx页面只能通过一组特定的IP访问。这可能吗?如何为IIS中的单个URL设置IP白名单
我知道你可以在网站级别的IP白名单,但你可以在应用程序中的单个URL的IP白名单?
下资源演示了如何检测客户端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")
我希望这会有所帮助。
您可以随时在自己的应用程序中检查自己的白名单中的Request.ServerVariables [“REMOTE_HOST”]。
不幸的是,我很确定你不能通过IIS为单个页面执行它(如果你想验证,请查找Serverfault.com以获取更多细节),但是如果你想以编程的方式执行它,你可以勾选Application_BeginRequest在你的global.asax文件中。根据您的限制检查请求URL和请求IP地址,并且只允许请求在通过时继续。
+1:用于在'Global.asax'中实现过滤器的建议。 – kbrimington 2010-08-01 01:08:17