如何在IIS中为单个URL IP白名单

时间:2010-08-01 00:32:39

标签: asp.net whitelist

我有一个ASP.NET应用程序,它由几个.aspx页面组成。我希望其中一个.aspx页面只能通过一组IP访问。这可能吗?

我知道您可以在网站级别进行IP白名单,但是您可以在应用程序中为单个URL进行IP白名单吗?

3 个答案:

答案 0 :(得分:3)

不幸的是,我很确定你不能通过IIS为单个页面执行此操作(如果您需要验证,请查找Serverfault.com以获取更多详细信息),但如果您想以编程方式执行此操作,则可以将Application_BeginRequest挂接到你的global.asax文件。根据您的限制检查请求URL和请求IP地址,并且只有在请求通过时才允许请求继续。

答案 1 :(得分:3)

以下资源演示了如何在ASP.NET中检测客户端IP:

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")

我希望这会有所帮助。

答案 2 :(得分:1)

您可以随时在自己应用中的白名单中查看Request.ServerVariables [“REMOTE_HOST”]。