#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), и они использовали механизм аутентификации, при котором вы сначала входите в систему, и вам выдается токен, и вы должны прикреплять этот токен при каждом выполняемом вызове веб-службы.