Я работаю над проектом с использованием 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?
благодаря
Отвечая на вопросы безопасности, вы должны спрашивать себя, что мы пытаемся защитить, и какими могут быть атаки.
Короче говоря, HTTPS, исходя из ваших требований, безопасен. Это связано с тем, что вы спрашиваете, может ли SSL безопасно защищать информацию, которую веб-сервер знает и хочет отправить на внутренний сервер. Для этого используется SSL. Вам не нужно использовать дополнительные функции WS-Security. По крайней мере, пожалуйста, проверьте сертификат сервера.
Это безопасно, как только все веб-сайты работают под SSL, и вы реализуете все распространенные требования для защищенных веб-сайтов, включая заголовок HSTS, и отказываетесь обслуживать HTTP-запросы. Я говорю это, потому что полагаю, что конфиденциальные данные, которые вы, возможно, хотели бы защитить, поступают от клиента.
В качестве примера предположим, что система оплаты кредитной карты с уязвимостью.
Ответ будет следующим: "Хорошо, вы защищаете связь между веб-сервером и бэкэнд, но будьте осторожны, что кто-то заинтересован в поиске базы данных". Представьте себе уязвимость SQL-инъекций на веб-сайте HTTPS, способную сбрасывать базу данных кредитных карт. Для HTTPS это не то.
Теперь рассмотрим другой сценарий, где HTTPS недостаточно. В принципе, HTTPS защищает сквозную связь. Вот мое требование:
Очевидно, что SSL не решит этого. Предположим, что ваш веб-сервис является частью сообщества, а серверный сервер работает с несколькими веб-серверами. SSL будет защищать и аутентифицировать трафик между веб-сайтом и обратно, однако серверный сервер может хранить произвольно допустимые сообщения SOAP, заявляя, что они поступают с вашего веб-сервера
Для этого необходимо подписать полезную нагрузку SOAP и использовать WS-Security. Полезная нагрузка может быть передана сторонней аудиторской службе, окутанной внешним сообщением SOAP, аутентифицированным внутренней службой.
Теперь позвольте мне изменить ваш вопрос. "Как я могу позволить клиенту отправлять веб-серверу конфиденциальную информацию, которую сервер не может читать, но внутренний код может читать?".
Вот, например, когда POS-машина (например, фотография ниже, любезно предоставлена Google Images) хочет отправить ваш веб-сервер на заказ на поставку, не раскрывая номер CC, который будет известен только банку.
Извините, я не могу найти университетскую работу, которую я делал в прошлые годы по этому сценарию, потому что у меня был слайд.
Тогда SSL недостаточно, и вы можете использовать WS-Security для выполнения следующих действий: