2015-04-21 2 views
0

Мы создаем api, который помогает сторонним приложениям проверять комбинации UID/паролей на базе базы данных на удаленном сервере.Как проверить пароль для базы данных на удаленном сервере?

Когда пользователь вводит свое имя пользователя и пароль в стороннем приложении и отправляет запросы, имя пользователя и пароль должны быть отправлены на наш api надежно, мы берем UID и пароль, отправляем их на удаленный сервер, который сравнивает его с базой данных и сообщает нам, является ли комбинация действительной или нет. Как мы отправляем пароль? Как это сделать, чтобы он не был хэширован и проверен удаленным сервером с базой данных?

Мы используем каркас для отдыха django.

+1

Развернуть? Например, вычислить хэш SHA-1 с 1 ГБ видео и вернуть исходное видео из 160-битной строки? Вероятно, вы имеете в виду ** шифровать **, и для этого существует широко распространенная технология: HTTPS. Сказано, что неясно, хотите ли вы заставить его работать с определенным сервисом или вам нужно решение общего назначения. В первом случае, вероятно, нет необходимости передавать исходный пароль вообще. –

+0

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

ответ

1

Сначала вы хотите использовать надежное соединение SSL.

Во-вторых вы можете использовать соль как "mysecretsalt $" §% § $% § $»и хэш его как

$ Var = sha1 ($ соль $ проход.);

Затем отправить $ var as authtoken.

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

+1

Рекомендованные хэши для хранения паролей - это Bcrypt или Blowfish, реализованные в [password_hash()] (http://php.net/password_hash). Сказал, что любой хеш, который мы выбираем, бесполезен, если он не соответствует целевой базе данных, и мы не имеем никакого представления об этом. –

+0

Но как мне сравнить хешированный пароль (отправленный нами) с непроверенным, соленым паролем (сгенерированным на пульте по запросу)? Является ли результат хасинга sha1 одинаковым независимо от сервера? –

+0

Точно Альваро, как мы можем привести два пароля к одному и тому же «формату» для сравнения? –

1

До тех пор, пока вы используете SSL для всех сетевых коммуникаций on, нет необходимости «пре-хэш». Просто отправьте его.

Все, что вы делаете (шифрование и т. Д.), В любом случае просто плохо изобретает SSL, поэтому просто сделайте это.