Веб-сервис: дизайн и соображения безопасности, которые следует учитывать?

#web-services #security

#веб-сервисы #Безопасность

Вопрос:

Какие шаблоны проектирования необходимо оценить при внедрении веб-сервиса?

Что еще более важно, какие аспекты безопасности необходимо учитывать для веб-сервиса? Поскольку WSDL содержит полную информацию о сервисе, включая форматы ввода, вывода и URL-адрес доступа, не ставится ли под угрозу безопасность веб-сервиса?

Заранее спасибо,

Редактировать

Просто хотелось бы добавить пару вещей.

Я разрабатываю сервис на Java, который будет развернут на сервере JBoss, размещенном на компьютере с Linux (Fedora).

Что касается механизма аутентификации, рассматриваемого для вызова служб, да, у меня есть это на месте. Если пользователь не получит токен, он не сможет использовать другие сервисы, которые фактически выполняют бизнес-операцию.

Кроме того, скрыли фактический запрос в двух слоях XML, используя CDATA для фактического тела запроса внутри тела SOAP Envelope. Что-то вроде приведенного ниже кода.

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:myns="http://testserver/testservice">
   <soapenv:Header/>
   <soapenv:Body>
      <myns:Operation>
         <myns:OperationRequestBody><![CDATA[-- actual request XML goes here --]]></myns:OperationRequestBody>
      </myns:Operation>
   </soapenv:Body>
</soapenv:Envelope>
  

Существует ли какой-либо аспект безопасности для URL-адреса — скажем, с использованием протокола HTTPS, который, как я понимаю, будет конфигурацией на уровне сервера.

Комментарии:

1. Не публикуйте ответы с дополнительной информацией. Вместо этого отредактируйте свой вопрос.

Ответ №1:

ну, это зависит от ряда факторов:

  • предоставляете ли вы свой веб-сервис внутри организации (где вам не нужно сильно беспокоиться о безопасности) в отличие от предоставления веб-сервиса извне.

одна вещь, которую мы делаем (когда мы предоставляем доступ внутренне), мы используем аутентификацию Windows / NTLM, чтобы определенные люди в нашем домене могли ее запускать.

Я бы убедился, что я не предоставляю ничего, что может разрушить веб-сервис 🙂 (например, GetAllData или что-то подобное), чтобы вы предоставляли только методы, которые не имеют состояния и которые легко регулировать при необходимости.

кроме того, использовался API confluence (основанный на webservice), и они использовали механизм аутентификации, при котором вы сначала входите в систему, и вам выдается токен, и вы должны прикреплять этот токен при каждом выполняемом вызове веб-службы.