Петлевые соединения для настольных приложений - надежно и безопасно? - PullRequest
0 голосов
/ 10 февраля 2012

Я пишу настольное приложение для профессиональных пользователей, использующих C ++. Мой текущий дизайн опирается на сторонний компонент C ++, API которого основан на TCP / IP. Для интеграции этого компонента может потребоваться его модификация для замены сетевого кода на обычный C ++ API.

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

У меня есть две проблемы с этим петлевым подходом. Кто-нибудь может развеять или подтвердить мои страхи?

Надежность и производительность Соединение с обратной связью может прерваться, быть заблокировано или перехвачено антивирусом. Примерно так: Loopback-соединения, работающие в контексте пользователя, но не работающие с учетной записью Local System

Безопасность Я не слишком обеспокоен тем, что кто-то прослушивает мои петлевые пакеты, но я не хочу, чтобы мой сервер сам подвергался угрозе безопасности. Опасно ли слушать процесс на каком-нибудь высоком порту?

Много ли настольных приложений работают так?

Я изначально занимаюсь разработкой для Windows, но в будущем могу перейти на Mac и Linux, поэтому этот вопрос относится ко всем распространенным настольным ОС.

1 Ответ

1 голос
/ 10 февраля 2012

Надежность: если сам компонент является надежным, то нет проблем с прослушиванием интерфейса обратной связи.Если компонент ненадежен, то лучше поговорить с ним через петлевой интерфейс, а не вызывать его функции напрямую.Вы можете легко обработать разъединения и перезапустить компонент, чтобы продолжить работу, но если вы захотите связать его с компонентом, и компонент потерпит неудачу - ваше приложение тоже выйдет из строя.Не очень большой с текущей мощностью процессора.Это должно быть приемлемо для большинства приложений.

Безопасность: компонент должен связываться с адресом локального хоста, чтобы избежать проблем безопасности.Но локальное стороннее программное обеспечение (вирус) с достаточным уровнем доступа может перехватывать или даже изменять потоки связи.То же самое для любого другого метода связи.

Шлейфовые соединения используются незаметно (java использует его для связи, поименовал, использовал его для управления основным сервисом и т.

...