2009-12-14 3 views
1

Я строю систему, состоящую из множества клиентов, подключающихся к серверу. Клиенты автоматически перенаправляют данные на сервер через вызов веб-службы. Я построил механизм аутентификации, чтобы клиенты могли аутентифицироваться на сервере, поэтому только аутентифицированные клиенты могут загружать данные. Проблема в том, что я жестко закодировал пароль в код клиента, и он доступен, если кто-то использует рефлектор. В этом случае, когда у меня нет пользовательского ввода, какой был бы лучший способ хранения статического пароля на клиенте? Благодаря (версия .Net на клиенте 2.0 и версии .net на сервере 3,5)Лучший способ для хранения статического пароля для автоматизированного клиента

ответ

0

Я бы рассмотреть возможность получения хорошего обфускатора для вашего кода, для одной вещи. Это предотвратит (или, по крайней мере, сдерживает) людей от использования рефлектора на ваших собраниях.

Однако ваша система аутентификации не звучит слишком надежно. Даже если вы зашифровали пароль, если пароль всегда один и тот же, было бы так же легко, как обнюхивать пакеты, чтобы выяснить, что нужно отправить на ваш сервер для аутентификации. Потому что он должен быть дешифрован до его отправки.

Вам нужно будет пройти SSL по крайней мере.

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

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

+0

Спасибо, я пройду через SSL, уже используя Machine Hash, и я рассмотрю схемы лицензирования. – TomSharp

1

У вас есть несколько методов, которые можно использовать, но один из самых простых в реализации будет шифровать пароль, а затем просто сохраните его в app.config для приложения, которое будет развернуто для пользователя.

+0

Тем не менее механизм дешифрования будет отображаться через отражение, не так ли? – TomSharp

1

Вы посмотрели http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx?

Кроме того, являются ли ваши веб-сервисы WCF? Если это так, вы можете использовать взаимную защиту сертификатов. Он гораздо более надежный, чем пароль.

НТН

+0

Я должен иметь устаревшую поддержку - так что не могу использовать что-нибудь подобное ... – TomSharp

1

«Я создал механизм аутентификации, чтобы клиенты могли аутентифицироваться на сервере, поэтому только аутентифицированные клиенты могут загружать данные».

Как они аутентифицируются, чтобы стать «аутентифицированными клиентами»?

Может ли кто-то просто скопировать приложение на свой домашний компьютер, и теперь они являются аутентифицированным клиентом?

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

Если вы можете выполнить проверку на основе IP, если вы хотите избежать использования паролей и логинов.

+0

Это большая проблема. Любой может просто скопировать мое приложение на свой домашний компьютер и стать аутентифицированным клиентом. Прямо сейчас я использую идентификатор оборудования, чтобы избежать этого сценария. Но это все еще недостаточно безопасно. – TomSharp