Prafulla Sahu Ответов: 2

Обработайте сообщение об ошибке проверки от ASP.NET веб-службы, использующие C#


У меня есть несколько веб-сервисов (. asmx), которые были разработаны давным-давно, и теперь инструмент IBM обходит наши веб-сервисы в поисках любых нарушений безопасности.

Как создавались Мои сервисы?

- > Для всех веб-методов не реализована логика проверки.

- > Веб-методы ожидают хороших значений, поэтому никакой реализации проверки безопасности нет.

Как работает IBM tool

-> Когда инструмент вводит какое-то случайное значение в параметр метода, он выдает код состояния 500.

-> моя работа здесь заключается в том, чтобы показать какое-то общее сообщение(например, произошла ошибка), а не выбрасывать 500.

Подход

- > Я должен создать класс проверки, который будет содержать всю логику проверки и ограничит ввод вредоносных данных в код.

-> Я должен перейти к каждому методу, чтобы выполнить проверку параметров, и мне нужно отправить сообщение об ошибке проверки, если какая-либо проверка не удалась.

У кого-нибудь есть идея, как я могу проверить методы так, чтобы не нужно было переходить к каждому методу, или это тот подход, которому я должен следовать?

Примечание: шаблон проверки данных параметров может варьироваться в зависимости от требования, например, если у нас есть 2 строковых параметра, но мы не можем проверить их с помощью одной логики, у них могут быть разные правила приема данных со стороны пользовательского интерфейса.

Есть идеи, есть предложения, как этого добиться?

Что я уже пробовал:

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

F-ES Sitecore

В чем проблема с возвратом кода состояния 500? Как еще вызывающие приложения узнают, что метод потерпел неудачу?

ZurdoDev

Я не уверен, что все так просто, как ты говоришь. Ошибка 500 возникает еще до того, как ваш код веб-сервиса будет выполнен, поэтому включение проверки в эти методы ничего не даст.

Prafulla Sahu

Спасибо за ваши ответы, но команда безопасности предлагает проверить валидацию, если она не работает, а затем показать какое-то общее сообщение вместо ошибки 500. Бьюсь головой, как это реализовать.

2 Ответов

Рейтинг:
12

Graeme_Grant

Ошибка 5xx указывает на серьезный сбой на стороне сервера-не очень хорошая вещь.

Помимо того, что указывает инструмент, ошибка 5xx также повлияет на ваш поисковый рейтинг, если страницы будут обход.

Если у вас есть список URL-адресов, которые инструмент предоставляет вышеупомянутым ошибкам 5xx, у вас есть ссылка на то, где в коде вам нужно искать. Тогда остается только загрузить код в IDE и установить точки останова в этих конкретных местах кода, чтобы увидеть, что происходит на самом деле. Как только вы поймете, почему, вы можете добавить код, чтобы быть более пуленепробиваемым и давать более значимые ответы.

Вот список кодов состояния Http и их значения: Коды состояния HTTP-restapitutorial[^]


Рейтинг:
11

Bryian Tan

Это очень стандартное сканирование уязвимостей. Ваше приложение должно не только скрывать HTTP-код ошибки 500, но и 404, 403 от злоумышленника (другими словами, всегда отображать 200 OK). Ошибка 404 возникает, когда сканер пытается перейти на несуществующую страницу (http://yourservice.com/ninja.asmx). 403, поисковый робот пытается перечислить содержимое папки (например: http://yourservice.com/images), если вы исправите ошибку 500, следующее сканирование может вернуться с 403 или 404. Исправьте все сразу чтобы избежать разговоров с командой безопасности. Кстати, помимо сокрытия ошибки, вам также может потребоваться подумать о том, как регистрировать эти ошибки для административной проверки в будущем. Это может быть еще один красный флаг, если у вас нет этого элемента управления.

Хорошо, для ошибок http:

1. Убедитесь, что приложение перенаправляет все ошибки на общую страницу ошибок, мы не хотим, чтобы наш любопытный противник знал, что было сломано
Пример:

<system.web>
    <customErrors mode="On" defaultRedirect="~/Error.html" />
</system.web>

2. Настроить пользовательские страницы ошибок в IIS, то IIS для отображения страницы настраиваемой ошибки. Например, если кто-то вводит url-адрес http://yourservice.com/ninja.php, что вне юрисдикции приложения IIS должен решить, что с ним делать. если IIS вернет 404, то противник будет знать, что IIS не поддерживает PHP. и т.д...
Вы можете настроить его с помощью IIS или скопируйте и вставьте его в интернете.конфиг
<system.webServer>
   <httpErrors errorMode="Custom">
      
      <remove statusCode="500" subStatusCode="-1" />
      <remove statusCode="404" subStatusCode="-1" />
      <remove statusCode="403" subStatusCode="-1" />
      <remove statusCode="401" subStatusCode="-1" />
      <error statusCode="401" subStatusCode="-1" prefixLanguageFilePath="" path="/Error.html" responseMode="ExecuteURL" />
      <error statusCode="403" subStatusCode="-1" prefixLanguageFilePath="" path="/Error.html" responseMode="ExecuteURL" />
      <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/Error.html" responseMode="ExecuteURL" />
      <error statusCode="500" subStatusCode="-1" prefixLanguageFilePath="" path="/Error.html" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>

3. выключите режим отладки (сохраните трассировки стека и т. д... если нет, то инструмент IBM вызовет другой флаг.
<system.web>
    <compilation debug="false" />
</system.web>

4. Тест, Тест, тест, прежде чем дать другую команду повторного сканирования/повторно запустить средство IBM.

Прочесть...
HTTP Errors & lt;httpErrors>: официальный сайт Microsoft IIS[^]

элемент<customErrors & gt; [^]

Ошибка HTTP 404 in ASP.NET веб-приложение[^]

Как настроить пользовательские страницы ошибок в IIS 7.5 с помощью ASP.NET[^]