Безопасный простой веб-сервис JAX-WS на Java, следуя рекомендациям OWASP - PullRequest
0 голосов
/ 07 июня 2018

В Java 1.6+ просто обеспечить веб-сервис SOAP JAX-WS 2.0, даже без внешних библиотек:

Это более или менее: мы помечаем интерфейс и класс сервиса с помощью @WebService, добавляем @WebParam к аргументам предоставленных методов, вызовите Endpoint.publish и там мы идем !Мне даже не нужно аннотировать классы входных или выходных данных для JAXB.

Но насколько безопасно предоставлять такие веб-службы?

Я не имею в виду бизнесview (разрешен ли пользователю доступ к определенной записи, как реализовать управление доступом на основе ролей и т. д.), но на стороне инфраструктуры, особенно в отношении обработки XML.

Например, OWASP рекомендует :

Веб-службы должны проверять полезную нагрузку SOAP на соответствие их определению XML-схемы (XSD).

Придется ли это делать вручную?Подойдет ли для меня реализация JAX-WS 2.0 по умолчанию, включенная в JDK?Нужно ли включать это, используя конфигурацию, аннотации и т. Д.?

Кроме того, OWASP рекомендует:

  • Проверка на наличие поврежденных объектов XML
  • Проверка на XMLБомбовые атаки
  • Проверка на атаки внешних объектов

Если я предоставлю услугу, как описано в начале, мне придется принять дополнительные меры для защиты от внешнего объектаатаки?Или против атак десериализации XML («ysoserial» и тому подобное)?XML бомбы / DoS?

Знаете ли вы расширение для шпаргалки веб-службы OWASP , в котором объясняется, как реализовать рекомендации в простом веб-сервисе, предоставляемом с использованием стандартной функциональной возможности Java 1.6+ +?

В целях безопасности давайте предположим, что используется самая последняя версия патча Java 8.Мои ссылки на Java 1.6 предназначены для ссылки на «готовые» возможности веб-службы SOAP, представленные в этой версии (RI включен без необходимости пользовательских JAR-файлов).

1 Ответ

0 голосов
/ 07 июня 2018

Рассматривая пример развертывания WS, который вы упомянули: мне кажется, что за кадром этот метод будет использовать как встроенный Java HttpServer (для управления HTTP-запросами и HTTP-ответами в / из вашего веб-сервиса), так и внутреннийСправочная реализация JAX-WS, также известная как Metro.

Страница Metro на GitHub

Я не совсем уверен, какая реализация JAX-WS RI используется в1.6, скорее всего это тот же Метро.Так что было бы неплохо пройтись по документации Metro, чтобы получить необходимую информацию с учетом спецификаций безопасности.С моей точки зрения, это решение подходит для тестирования, когда вам нужно как можно быстрее проверить свой веб-сервис.Но это только мое мнение.Обычно этот подход также имеет право быть использованным в проектах.

Также у меня нет никакой информации, включены ли рекомендации OWASP в соответствующие спецификации JAX-WS.Если они есть, то Metro, вероятно, реализует это из коробки.

...