基于 IP 地址限制访问 Elmah

4
我需要限制对elmah.axd和elvue.html的访问,基于特定的IP地址。该网站在IIS 6.0和.Net 3.5上运行。我不能使用表单身份验证或Windows身份验证。我考虑使用http模块的方法。您可以参考以下链接:http://www.codeproject.com/Articles/16384/Using-ASP-NET-HTTP-Modules-to-restrict-access-by-I
由于web.config仅适用于IIS 7,因此我不能使用在web.config中限制访问的方法。您可以参考以下链接:http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html
请问有没有人能为我提供解决此问题的指导?谢谢。
2个回答

5
我使用以下代码实现了这个功能:
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;
            }
        }

0

这两个建议对我都不适用,因为我不能使用表单\Windows身份验证。此外,elmah.axd文件不是一个实际的物理文件,因此第一个建议也不起作用。 - Ajit Goel
我感到困惑,IIS 6指南中没有提及Windows身份验证。您是否考虑使用应用程序的身份验证系统来控制对这些文件的访问? - RandomUs1r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接