Я столкнулся с системой, которая используется компанией, с которой мы рассматриваем возможность партнерства в рамках проекта среднего размера (для нас, а не для них).
У них есть веб-сервис, с которым нам нужно будет интегрироваться.
Мое текущее понимание правильного управления именем пользователя / паролем заключается в том, что имя пользователя может храниться в виде открытого текста в базе данных. У каждого пользователя должна быть уникальная псевдослучайная соль, которая также может храниться в виде открытого текста. Текст их пароля должен быть соединен с солью, а затем эта объединенная строка может быть хеширована и сохранена в базе данных в поле nvarchar. Пока пароли отправляются на веб-сайт (или веб-сервис) через SSL , все должно быть просто прекрасно.
Не стесняйтесь проникнуть в мое понимание, как описано выше, если я ошибаюсь.
Во всяком случае, вернемся к предмету под рукой. WebService, запущенный этим потенциальным партнером, не принимает имя пользователя и пароль, которые я ожидал. Вместо этого он принимает два строковых поля с именами «Имя пользователя» и «Пароль». Значение «PasswordHash», которое мне было дано, действительно выглядит как хеш, а не просто как значение для поля с неверно названным паролем.
Это поднимает красный флаг для меня. Я не уверен, почему, но я чувствую себя некомфортно, отправляя хешированный пароль по проводам по какой-то причине. Вдобавок ко всему, я не могу придумать причину, почему это было бы плохо ... Технически, хэш в любом случае доступен в базе данных. Но это заставляет меня нервничать, и я не уверен, есть ли причина для этого или я просто параноик.
EDIT
Меня смущали некоторые комментарии ниже, пока я не перечитал свой пост.
В оригинале у меня была фраза: «Пока пароли отправляются на веб-сайт (или веб-сервис) через обычный текст , все должно быть просто прекрасно».
Я клянусь, поскольку думал, что я думаю о термине «SSL». По какой-то причине я набрал слово «открытый текст». Ничего себе.
Worst. Опечатка. Когда-либо.