Безопасная передача данных через http с пользовательским сервером - PullRequest
1 голос
/ 03 июля 2010

Я довольно плохо знаком с аспектом безопасности приложения. У меня есть C ++ оконная служба (сервер), которая прослушивает определенный порт для HTTP-запросов. HTTP-запросы могут быть сделаны через клиент Ajax или C #. Из-за некоторого изменения области действия теперь мы должны обеспечить эту связь между клиентами и пользовательским сервером, написанным на C ++.

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

Спасибо DPAK

Ответы [ 4 ]

0 голосов
/ 03 июля 2010

Это достаточно просто сделать, используя OpenSSL или Microsoft SChannel SSPI интерфейс.

Насколько это сложно для вас, зависит от того, как вы структурировали свой сервер. Если это традиционный тип BSD-сокетов «select», то будет достаточно просто взять примеры из OpenSSL или SChannel и получить что-то работающее довольно быстро.

Если вы используете более сложный дизайн сервера (асинхронные сокеты, IOCP и т. Д.), Тогда это немного сложнее, так как примеры не показывают эти вещи. В 2002 году я написал статью для Windows Developer Magazine, которая доступна здесь , в которой показано, как использовать OpenSSL с асинхронными сокетами, и этот код можно использовать для работы с перекрывающимися серверами ввода-вывода и IOCP, если вам нужно к.

0 голосов
/ 03 июля 2010

Учитывая, что у вас есть HTTP-сервер (не IIS), и вы хотите внедрить HTTPS (который легко испортить и получить правильный), у вас есть несколько вариантов:

  1. Перепишите сервер как объект COM, а затем соберите веб-сервис IIS, который вызывает ваш объект COM для реализации веб-сервиса.После этого вы можете настроить IIS для предоставления веб-службы через HTTP и HTTPS.

  2. Установить прокси-сервер ( Internet Security and Acceleration Server или Apache с mod_proxy ) на том же хосте, что и существующий сервер, и настройте прокси-сервер для прослушивания через HTTPS, а затем обратный прокси-запрос к вашей службе.

Для второго варианта требуетсяпрактически нет изменений в вашем приложении;Первый вариант - лучший долгосрочный архитектурный ход.

0 голосов
/ 03 июля 2010

Хороший инструментарий для защиты канала связи: OpenSSL .

Тем не менее, даже при использовании инструментария существует множество способов сделать ошибки при реализации уровня безопасности, которые могут оставитьВаши данные открыты для атаки.Вам следует рассмотреть возможность использования существующего https-сервера и переадресации запросов на ваш сервер по каналу обратной связи.

0 голосов
/ 03 июля 2010

Использование HTTPS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...