Назад | Перейти на главную страницу

Как получить удобную страницу с ошибкой, чтобы заменить страницу с ошибкой asp.net для URL-адреса «WEB-INF./web.xml»?

Этот URL-адрес является частью сканирования соответствия pci, и он отмечает очень редкую возвращенную страницу ошибки asp.net, которая на действующем сайте представляет собой код состояния 500 и текст

Ошибка сервера в приложении '/'

Ошибка выполнения

Описание: исключение при обработке вашего запроса. Кроме того, при выполнении настраиваемой страницы ошибки для первого исключения возникло другое исключение. Запрос был прекращен.

Однако при запуске сайта в визуальной студии я получаю 404 и текст

Ошибка сервера в приложении '/'

Ресурс не найден.

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Просмотрите следующий URL-адрес и убедитесь, что он написан правильно.

Запрошенный URL: /WEB-INF./web.xml

Информация о версии: Microsoft .NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.18044

Я пробовал игнорировать этот URL-адрес в маршрутизации и сопоставить его с нашим маршрутом 404 /error/not-found, у нас есть собственные ошибки с перенаправлением по умолчанию на /error/internal. Я также попытался использовать тег местоположения, чтобы запретить доступ, заблокировать его с помощью фильтрации запросов и использовать обработчик с этим путем для перехвата запроса.

Я попробовал это переписать, также попробовал те же правила блокировки и перенаправления, но я все равно получаю ту же страницу с ошибкой asp.net. Изображение обрезано, но правило ^.*\./.*$ и он соответствует URL-адресу, который я пытаюсь отфильтровать (я также пробовал просто WEB-INF).

Есть идеи, как я могу получить этот URL-адрес для отображения нашей настраиваемой страницы ошибок?

Добавление relaxedUrlToFileSystemMapping="true" к узлу httpRuntime в web.config позволил этому URL-адресу обрабатываться ASP.Net MVC, как ожидалось.

<system.web>
  <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>

В IIS по умолчанию подробные сообщения об ошибках отображаются для локальных клиентов, поэтому вы можете просматривать эти сообщения через Visual Studio, но получать ошибку 500 удаленно.

Чтобы внести изменения, в диспетчере IIS щелкните соответствующий сайт, щелкните «Страницы ошибок» в представлении функций и на правой панели выберите «Изменить параметры функций». Затем вы сможете выбрать «настраиваемые страницы ошибок» и настроить все таким образом.

Изменить: в Tomcat также есть уязвимость:

<servlet-mapping> 
<servlet-name>FileServlet</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping> 

Найдите это в своем файле web.xml и закомментируйте. Это предотвратит доступ к /WEB-INF./ и доступ к вашим файлам. Обратите внимание, что / WEB-INF / должен выбросить соответствующий 404.