Каков наилучший способ обеспечения безопасности .net Webservice для каналов программного обеспечения и обновлений - PullRequest
1 голос
/ 10 марта 2011

Я прочитал много, много и много статей о безопасности WCF и т. Д., Но я действительно не понимаю, какой метод защиты моего программного обеспечения является лучшим.

Проблема: в моем клиентском программном обеспечении [CS] естьпозвонить в мой веб-сервис [WS].CS вызывает функции WS в течение рабочего времени много раз, потому что, когда пользователь нажимает на элемент в списке, пользователь хочет видеть некоторую подробную информацию, которая хранится на моем сервере и которая часто обновляется.При добавлении к этой CS во время выполнения отправляйте в WS много информации для обновления статистики (и проверки лицензии в порядке).

зачем внедрять безопасность: - CS будет иметь платную подписку, чтобы использовать ее, поэтому я должен защищатьопять пиратство.- WS отправляет в CS горячую информацию, которую больше никто не должен принимать.- CS отправил горячую информацию в WS.WS хранит его, и я хочу, чтобы «Человек посередине» отправлял вредоносную информацию

. Очевидно, я хочу, чтобы каждое отправленное / полученное сообщение было УНИКАЛЬНЫМ, чтобы никто не мог снова отправить сообщение на WS.

Запрос: - Клиент должен убедиться, что WS является официальным WS, а не взломанный прокси / эмуляция WS - WS должен знать, кто CS, отправляющий сообщение, чтобы он мог проверять номера лицензий / подписок и возвращать результаты на основена счет.

Какую стратегию выбрать?

Ограничения: - Вероятно, изначально я не могу купить действительный сертификат SSL (но я сделаю это, если кто-то купит мою подписку) - WSбудет на общем хостинге Windows (так что я думаю, что нет SSL)

Я читал о безопасности транспорта, безопасности сообщений и их гибрид.но какое свойство устанавливать?какой метод аутентификации используете?"Сертификат х.509"?«Безопасный токен-сервис»?"Имя пользователя"?

спасибо всем!

ОБНОВЛЕНИЕ: Спасибо JonoW!Хорошо, я могу позволить себе VPS ... но не настоящий сертифицированный сертификат ... я думаю, мне не нужен настоящий сертификат.чтобы подтвердить лицензию, я могу заставить CS отправлять обработанный серийный номер, полученный из аппаратных серийных номеров ... мне просто нужно, чтобы клиент не использовал программное обеспечение одновременно на нескольких ПК.поэтому, если кто-то клонирует / украл учетные данные другого пользователя, я заблокирую учетную запись или автоматически сброслю пароль пользователя.

Проблема заключается только в том, чтобы не допустить, чтобы кто-то эмулировал «это имя пользователя / пароль / серийный номер имеют действующую лицензию»сообщение моего WS и отправка его с поддельного WS, чтобы никто не отправлял вредоносные данные на мой WS, выдавая себя за другого клиента ... Как вы думаете, SSL и Verisign сертификат - единственный путь?Почему «Служба безопасного токена» или «Имя пользователя / пароль» не очень хорошая идея?

1 Ответ

1 голос
/ 10 марта 2011

Использование сертификатов X.509 с WCF, вероятно, поможет вам достичь того, чего вы хотите, но это все равно означает покупку сертификата в центре сертификации.Это также означает, что клиенты должны будут устанавливать сертификаты на своих концах, что может быть неоправданно.

Использование SSL означает, что вы можете верить, что данные не были подделаны при передаче, и вы можете верить, что данные из WS являются подлинными, но WS не сможет гарантировать, что данные, отправленные изCS определенно из этого лицензированного клиента, вам понадобится какой-то другой механизм для этого.

Что касается использования SSL на общем хосте, то, очевидно, это зависит от хоста, некоторые могут это разрешить.Может быть, стоит рассмотреть возможность использования VPS?

Обновление

Почему «Служба безопасного токена» или «Имя пользователя / пароль» не очень хорошая идея?

Оба эти решения докажут WS, что клиент является действительным пользователем, но клиент не может гарантировать, что WS является подлинным WS.Т.е. хакер может изменить настройки DNS для маршрутизации трафика, предназначенного для WS, на свой собственный сервер, чтобы ответить, что пользователь / лицензия действительны, даже если это не так.Вот где SSL помогает, потому что клиент знает, что сертификат SSL является подлинным (это делается для вас .Net), тогда, если данные, которые можно расшифровать с WS, используя сертификат SSL, они ДОЛЖНЫ быть получены от WS,а не "подделка" WS.

...