如何在尝试访问.asmx Web服务上不存在的Web方法时禁止显示错误消息

时间:2010-12-15 15:58:05

标签: asp.net asmx

我们有一位客户正在使用HP Web Inspect来测试我们软件中的漏洞。

Web检查工具抱怨在发出以下请求http://host/application/WebService.asmx/MethodDoesNotExist时返回错误消息。

ASP.Net框架返回一个包含以下文本内容和500状态代码的页面。

System.IndexOutOfRangeException: Index was outside the bounds of the array.

仅供参考:如果在web.config中将自定义错误设置为off,我们也会获得堆栈跟踪 - 就像这样

    System.IndexOutOfRangeException: Index was outside the bounds of the array.
       at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
       at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
       at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
       at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

现在,检查工具将此结果视为安全漏洞,因为该页面具有500状态代码(因此服务器已承认发生了错误),并且错误消息看起来可能是泄漏有关该信息的信息软件的内部工作。最佳做法是始终显示通用的非特定错误消息。

问题是,我似乎无法控制此错误消息 - 它是由框架生成的,并且Application_Error代码未运行。

后面的.asmx代码看起来像这样

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
    public class FooService 
    {
        [WebMethod(true)]
        [ScriptMethod]
        public string Bar(int fooParam)
        {
            return "Hello";
        }
    }

有关如何防止生成此消息的任何想法?
我认为ASP.Net框架正在生成它为简单的Web服务显示的测试表单 - 如果是这种情况,是否有任何伏都教可以用来阻止它尝试生成这个页面?

由于

克里斯

额外信息

IIS 6(Windows 2003) ASP.Net 3.5

我们尝试在IIS中设置自定义500错误页面,但这没有效果!

网络配置如下所示:

   <httpErrors errorMode="Custom">
        <remove statusCode="500" subStatusCode="-1" />
        <error statusCode="500" prefixLanguageFilePath="" path="/application/http500.htm" responseMode="ExecuteURL" />
    </httpErrors>

  <customErrors defaultRedirect="~/ErrorPages/GeneralError.aspx" mode="On">
        <error redirect="500.htm" statusCode="500" />
   </customErrors>

但错误似乎不是未处理的错误,因此不显示500页。

1 个答案:

答案 0 :(得分:0)

如果您部署在IIS 7服务器上并使用集成管道模式,则可以在app中处理错误:http://learn.iis.net/page.aspx/267/how-to-use-http-detailed-errors-in-iis-70/

但是,如果其中任何一个不正确,那么您将不得不为500错误设置自定义错误页面。