В 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-файлов).