У меня есть сервис WCF, доступный по Интернету. Это имеет привязку wsHttpBinding и режим безопасности сообщения с учетными данными имени пользователя для аутентификации клиентов. В MSDN говорится, что мы должны использовать безопасность сообщения для интернет-сценариев, потому что это обеспечивает сквозную безопасность вместо безопасности точка-точка, как Транспортная безопасность имеет.
Что, если я использую транспортную безопасность для wcf сервиса по Интернету? Действительно ли это - плохая практика? Мои данные могли быть замечены злонамеренными пользователями?
Нет, это была бы хорошая практика - проблема в том, что вы не можете гарантировать полную цепочку безопасных соединений через произвольное количество промежуточных хопов, когда вы имеете дело с интернет-соединением.
Все, что вы можете гарантировать с помощью транспортной безопасности, это соединение от вашего клиента до первого хопа и соединение от последнего хопа до вашего сервера - все, что находится между ними, вы не можете контролировать. Таким образом, транспортная безопасность в Интернете не работает - если только у вас нет строго контролируемой среды, где вы знаете, что клиент подключается непосредственно к вашим серверам.
Из-за этих технических ограничений транспортная безопасность действительно работает только в корпоративных / локальных сетях. Как только у вас нет контроля над маршрутизацией и промежуточными переходами, вам нужно использовать защиту сообщений для обеспечения сквозной безопасности.
Да, это на 100% безопасно, когда клиенты (что и делает большинство клиентов) проверяют сертификат сервера.
Упомянутый здесь сценарий с несколькими переходами является подделкой. Это верно только тогда, когда одно и то же сообщение проходит через различные приложения. Например, несколько брокеров приложений. Если эти брокеры не обмениваются данными безопасно, сообщение может быть прочитано промежуточными сетевыми снифферами.
Другими словами, связь клиент / сервер через Интернет на 100% безопасна, даже если между ними установлен миллион маршрутизаторов, но она безопасна только тогда, когда клиент проверяет сертификат сервера, поскольку клиент может подключиться к злоумышленнику. средний хост, который мог выдавать себя за сервер с ложным сертификатом. Если клиент не проверяет сертификат, сообщение может быть скомпрометировано.