Безопасно ли SOAP с https WSDL?

1

Я работаю над проектом с использованием PHP и SOAP для подключения к веб-сервису, и у меня есть вопрос о безопасности.

На базовом уровне мой код выглядит следующим образом:

// Connect to web service
$client = new SoapClient( 'https://mywebservice.com:8443/whatever?wsdl' );

// Store the response after passing my values for that service
$response = $client->my_service( $my_args );

URL-адрес SoapClient превышает https и является адресом WSDL. Все это прекрасно работает - я могу возвращать и отправлять данные без проблем.

Веб-сайт, на котором он будет использоваться, использует SSL-сайт. Мой вопрос: является ли вышеуказанный метод безопасным для передачи конфиденциальных данных назад и вперед, если мы используем https для WSDL? Или я должен делать что-то дополнительное с SOAP, о котором я не знаю?

Я знаю, что WS-Security, но это нужно, если все выше https?

благодаря

  • 0
    Если вы проводите анализ безопасности, рекомендуется размещать сообщения в Security Stackexchange.
  • 0
    Спасибо за ваш ответ и указатель на Security Stackexchange - я не знал, что суб-сайт существует
Теги:
soap
web-services
https
wsdl

1 ответ

0
Лучший ответ

Отвечая на вопросы безопасности, вы должны спрашивать себя, что мы пытаемся защитить, и какими могут быть атаки.

Короче говоря, HTTPS, исходя из ваших требований, безопасен. Это связано с тем, что вы спрашиваете, может ли SSL безопасно защищать информацию, которую веб-сервер знает и хочет отправить на внутренний сервер. Для этого используется SSL. Вам не нужно использовать дополнительные функции WS-Security. По крайней мере, пожалуйста, проверьте сертификат сервера.

Это безопасно, как только все веб-сайты работают под SSL, и вы реализуете все распространенные требования для защищенных веб-сайтов, включая заголовок HSTS, и отказываетесь обслуживать HTTP-запросы. Я говорю это, потому что полагаю, что конфиденциальные данные, которые вы, возможно, хотели бы защитить, поступают от клиента.

Пример 1

В качестве примера предположим, что система оплаты кредитной карты с уязвимостью.

  • Клиент подключается через HTTPS к веб-серверу и отправляет номер CC. Никто не может видеть, что
  • Сервер выводит номер карты на сервер через HTTPS. Никто не может видеть, что
  • Задний конец хранит открытый номер номера кредитной карты в системе базы данных

Ответ будет следующим: "Хорошо, вы защищаете связь между веб-сервером и бэкэнд, но будьте осторожны, что кто-то заинтересован в поиске базы данных". Представьте себе уязвимость SQL-инъекций на веб-сайте HTTPS, способную сбрасывать базу данных кредитных карт. Для HTTPS это не то.

Пример 2.

Теперь рассмотрим другой сценарий, где HTTPS недостаточно. В принципе, HTTPS защищает сквозную связь. Вот мое требование:

  • Разрешение на авторизацию должно быть окончательно подписано машиной, запрашивающей платеж и сохраненной для будущего аудита в сторонней службе

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

Для этого необходимо подписать полезную нагрузку SOAP и использовать WS-Security. Полезная нагрузка может быть передана сторонней аудиторской службе, окутанной внешним сообщением SOAP, аутентифицированным внутренней службой.

Пример 3: усложнить ситуацию

Теперь позвольте мне изменить ваш вопрос. "Как я могу позволить клиенту отправлять веб-серверу конфиденциальную информацию, которую сервер не может читать, но внутренний код может читать?".

Вот, например, когда POS-машина (например, фотография ниже, любезно предоставлена Google Images) хочет отправить ваш веб-сервер на заказ на поставку, не раскрывая номер CC, который будет известен только банку.

Изображение 174551

Извините, я не могу найти университетскую работу, которую я делал в прошлые годы по этому сценарию, потому что у меня был слайд.

Тогда SSL недостаточно, и вы можете использовать WS-Security для выполнения следующих действий:

  • Клиент формирует сообщение SOAP, содержащее номер карты, который зашифрован с помощью серверного ключа сервера
  • Клиент конвертирует это сообщение SOAP с заказом на поставку, содержащим элементы и отправляет его на ваш сервер, даже через HTTP
  • Веб-сервер принимает заказ на поставку и подготавливает заказ
  • Веб-сервер принимает нечитаемое сообщение SOAP, зашифрованное для банка, и выдает платежное поручение
  • При успешной оплате заказ доставляется

Ещё вопросы

Сообщество Overcoder
Наверх
Меню