Лучшая практика с обработкой пароля через веб-сервис - PullRequest
1 голос
/ 16 сентября 2010

У меня есть N-уровневое приложение, состоящее из трех частей:

1. Client (WPF)
2. WebService (Java web service) (Business logic)
3. Database (Oracle)

Я храню свой пароль в базе данных md5 в базе данных Oracle, но отправляю пароль от клиента веб-службе в незашифрованном виде, как простойстрока.Какую технику я должен использовать для защиты пароля в сети?

Ответы [ 4 ]

1 голос
/ 16 сентября 2010

Я думаю, что SSL - ваш друг, как предлагают другие.Но что бы вы ни делали, я бы не отправлял хеш MD5 по сети.Частью хеширования (с MD5 или другим) является избежание сохранения значения, которое можно использовать «как таковое» для аутентификации пользователя.Если какой-либо злоумышленник получит доступ к БД, он увидит только хешированный пароль, но ему все равно потребуется использовать исходный пароль - который он не может расшифровать из хеша - для доступа к веб-службе.Если ваш веб-сервис вместо того, чтобы запрашивать исходный pwd и хэшировать его перед тем, как сравнивать его со значением, хранящимся в БД, решает позволить клиенту выполнять хэширование, вышеупомянутому злоумышленнику нужно только отправить скомпрометированный хеш для аутентификации.

1 голос
/ 16 сентября 2010

Я бы действительно рекомендовал использовать SSL, если вы не хотите заботиться о многих проблемах безопасности. Kerberos также хорошо решает эти проблемы, но это не так просто использовать.

Я получил некоторые сведения о проблемах безопасной аутентификации, прочитав Проектирование системы аутентификации: диалогв четырех сценах (речь идет о разработке Kerberos, но многое относится ко всем системам аутентификации в целом).

0 голосов
/ 16 сентября 2010

Вы можете отправить пароль MD5 с клиента на веб-сервис. Еще лучше, соленый MD5 (а в БД вы должны держать и соленый MD5). Тогда просто сравните то, что получено от клиента, с тем, что находится в БД.

0 голосов
/ 16 сентября 2010

Если вы беспокоитесь о перехвате запросов, вы можете использовать SSL для связи между клиентом и WS. Даже если вы кодируете реальный пароль внутри клиента перед отправкой его в веб-сервис, если закодированная форма каким-то образом раскрывается, ее можно использовать «как есть» для формулирования запроса к веб-сервису от любого HTTP-клиента. В качестве альтернативы вы можете зашифровать сам контент сообщения с помощью алгоритма, хранящегося исключительно на клиенте, чтобы вы могли гарантировать, что все запросы WS поступают только от вашего клиента.

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