我需要限制对elmah.axd的访问。 elvue.html基于某些IP地址。该网站位于IIS 6.0和.Net 3.5上。我不能使用Forms身份验证或Windows身份验证。我正在考虑使用http模块的方法。 http://www.codeproject.com/Articles/16384/Using-ASP-NET-HTTP-Modules-to-restrict-access-by-I
我不能使用限制web.config访问的方法,因为那只适用于IIS 7。 http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html
是否有人指出我如何解决这个问题?请指教。
答案 0 :(得分:4)
我使用以下代码实现了这个:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
var ClientSourceIP = Context.Request.Headers["CLIENT_SRC_IP"];
var HTTPClientSourceIP = Context.Request.Headers["HTTP_CLIENT_SRC_IP"];
var isValidClientSourceIP = ClientSourceIP == null ||
Regex.IsMatch(ClientSourceIP, ConfigurationManager.AppSettings["ValidClientSourceIP"]);
var isValidHTTPClientSourceIP = HTTPClientSourceIP == null ||
Regex.IsMatch(HTTPClientSourceIP, ConfigurationManager.AppSettings["ValidHTTPClientSourceIP"]);
if (
(Context.Request.Path.Contains("elmah.axd") || Context.Request.Path.Contains("elvue.aspx")) &&
((isValidClientSourceIP && isValidHTTPClientSourceIP) == false)
)
{
this.Context.Response.StatusCode = 403;
return;
}
}
答案 1 :(得分:0)
我在IIS 7中使用模块:IP限制完成了此操作。
以下是有关如何在IIS 6中执行此操作的指南:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4117d9e2-c7e0-46db-88f6-6e804b4325b0.mspx?mfr=true
另外,您是否尝试过修改web.config,如下所示:http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx?