我们有一位客户正在使用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页。
答案 0 :(得分:0)
如果您部署在IIS 7服务器上并使用集成管道模式,则可以在app中处理错误:http://learn.iis.net/page.aspx/267/how-to-use-http-detailed-errors-in-iis-70/
但是,如果其中任何一个不正确,那么您将不得不为500错误设置自定义错误页面。