У нас есть клиент, который использует HP Web Inspect для проверки на наличие уязвимостей в нашем программном обеспечении.
Инструмент веб-проверки жалуется на сообщения об ошибках, возвращаемых при выполнении запроса, подобного следующему http://host/application/WebService.asmx/MethodDoesNotExist
.
Платформа ASP.Net возвращает страницу со следующим текстовым содержимым и кодом состояния 500.
System.IndexOutOfRangeException: Index was outside the bounds of the array.
FYI: если в файле web.config отключено создание пользовательских ошибок,мы также получаем трассировку стека - вот так
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 - нет.run.
Код .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 Framework генерирует тестовую форму, которую он показывает для простых веб-сервисов - если это так, есть ли какое-либо вуду, которое я могу использовать, чтобы остановить его при попытке создать эту страницу?
Спасибо
Крис
Дополнительная информация
IIS 6 (Windows 2003) ASP.Net 3.5
Мы пытались настроить пользовательскую страницу ошибки 500 в IIS, но это не помогло!
Веб-конфигурация выглядит следующим образом:
<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.