Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
1

Передача пароля при авторизации

08.12.2014, 21:42. Показов 2697. Ответов 11

Добрый день, форумчане.

Столкнулся с дилеммой в Django. Хочу использовать стандартные средства для работы с пользователями. Но проверка пары логин/пароль методом auth.authenticate() требует пароля в открытом виде. В то же время принимать его в таком виде от пользователя - не есть очень хорошая идея. Как данную ситуацию принято решать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2014, 21:42
Ответы с готовыми решениями:

Шифрование пароля при авторизации
Здравствуйте всем. Есть сайт с авторизацией по Логину и Паролю. Пароль шифруется в какую-то байду,...

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

Ошибка пароля при авторизации базы данных
Всем добрый день, есть база данных "автолюбители", также есть форма авторизации, всё работает но...

Код для проверки правильности логина и пароля при авторизации выдает ошибку
Регистрация Логин Пароль Подтвердите пароль

11
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
09.12.2014, 09:53 2
Цитата Сообщение от elivin Посмотреть сообщение
В то же время принимать его в таком виде от пользователя - не есть очень хорошая идея.
Почему
вы считаете что это плохо?
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
09.12.2014, 12:12  [ТС] 3
Zuzik, потому что есть ненулевая вероятность перехвата трафика. Как-то совсем немножко нежелательно, чтобы пароль при этом можно было достать непосредственно из переданных данных
0
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
09.12.2014, 15:23 4
elivin, другие варианты? вероятность перехвата трафика есть всегда. И да - а почему вы уверены что все это в джанго передается в открытом виде?
0
30 / 20 / 1
Регистрация: 08.09.2012
Сообщений: 77
09.12.2014, 17:18 5
По всей видимости вам нужен https.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
09.12.2014, 17:49  [ТС] 6
Цитата Сообщение от Zuzik Посмотреть сообщение
другие варианты?
Вариант 1. При каждом открытии формы добавляем в базу случайно сгенерированную строку, идентификатор сессии или IP клиента и время добавления. Клиенту отдаём сгенерированную строку. При отправке формы берём введённый пароль, присоединяем к нему строку и получаем хэш полученной строки. Вместо пароля передаём хэш и сгенерированную строку. На сервере при проверке проверяем наличие строки в базе и соответствие её клиенту (). И тут спотыкаемся - джанго не выдаст пароль в открытом виде. Предположим, выдавал бы. Тогда присоединяем строку, вычисляем хэш, сравниваем. Если не совпадает, удаляем строку, генерируем новую. Время тоже проверяем. Старые записи удаляем.
Вариант 2. Синхронное шифрование. Сразу отметаем, так как не намного надёжнее передачи в открытом виде.
Вариант 3. Асинхронное шифрование. Это или https, что решает проблему независимо от того, джанго это, рельсы там или php, или шифрование только пароля. https конечно вариант, но я пишу не только для себя, а не все клиенты соглашаются покупать сертификаты. Шифрование только пароля мне кажется ресурсоёмкой операцией, хотя утверждать не буду - не пробовал.
Вариант 4? Так я и спрашиваю, какие ещё есть варианты

Цитата Сообщение от Zuzik Посмотреть сообщение
а почему вы уверены что все это в джанго передается в открытом виде?
В современных браузерах есть средства, позволяющие просматривать HTTP-заголовки (и много другой интересной информации)

MAKAPOH, https - это выход конечно. Меня интересует защита при использовании нешифрованного канала. С условием, что на сервере работает джанго
1
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
09.12.2014, 20:49 7
elivin, спасибо за информацию. По вашему вопросу - честно говоря не знаю точно как реализовать то что вы хотите не сильно отходя от стандартных средств джанго. Вроде как можно реализовать первый вариант, Ибо вроде как джанго в базе хранит хеши паролей, метода хеширования узнать можно, соль вроде как тоже.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
09.12.2014, 21:10  [ТС] 8
Цитата Сообщение от Zuzik Посмотреть сообщение
джанго в базе хранит хеши паролей, метода хеширования узнать можно, соль вроде как тоже
Этого недостаточно для первого варианта. Для него нужен пароль на сервере в открытом виде. Для проверки используется хэш строки, полученной соединением пароля и сгенерированной строки. Передавать каждый раз вместо сгенерированной строки один и тот же параметр (соль) не имеет смысла, так как для авторизации будет достаточно самой соли и хэша. Считай, данные для авторизации в открытом виде. В описанном мной варианте не зря фигурируют связь с сессией/IP, ограничение по времени и генерируемая строка.

Цитата Сообщение от Zuzik Посмотреть сообщение
метода хеширования узнать можно, соль вроде как тоже
Они там указаны. Прямо в поле password.
0
2723 / 2326 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
10.12.2014, 10:15 9
elivin, Можно хэшировать пароль на строне клиента и отсылать на сервер уже хэш.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
10.12.2014, 12:15  [ТС] 10
tsar925, данный вариант рассмотрен выше (вариант 1). Или есть идея, как можно проверить соответствие одного хэша другому?
И да, вариант с хэшами решительно не подходит для использования стандартных средств джанго, так как для авторизации необходима пара логин/пароль в открытом виде
0
2723 / 2326 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
10.12.2014, 14:46 11
Цитата Сообщение от elivin Посмотреть сообщение
Или есть идея, как можно проверить соответствие одного хэша другому?
А что тут сложного? Принимаешь от пользователя пароль, хэшируешь его и сверяешь с хэшом хранящимся в базе. Ни каких проблем.
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
10.12.2014, 15:51  [ТС] 12
tsar925, так всё-таки какой вариант предлагаете:
1. Передаём от пользователя хэш пароля с солью - не пойдёт, так как каждый раз (при правильном вводе пароля) будут передаваться одни и те же данные. Вариант ничем не лучше передачи в открытом виде
2. Передаём от пользователя пароль в открытом виде, на сервере вычисляем хэш... Стоп! Но нам нельзя в открытом виде его передавать (почему?)
3. Как описано выше, передаём сгенерированную (псевдо)случайным образом строку, от пользователя принимаем эту строку и хэш. А потом не можем проверить, так как у нас нет пароля в открытом виде, чтобы сверить хэш
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2014, 15:51

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Безопасная передача данных при авторизации
Где безопаснее всего хранить данные при авторизации и регистрации?Нужно ли их кодировать?

Изменение пароля в форме авторизации
Доброго времени суток уважаемы знатоки, прискорбно решил просить у вас помощи еще раз. Есть форма...

Проверка логина и пароля на форме авторизации
Помогите пожалуйста с заданием, есть справочник в котором заранее занесены логины и пароли...

Ajax Форма авторизации - Запоминание логина и пароля
Здравствуйте, Имеется форма авторизации примерной конструкции: <form name="wa_auth"...

Не корректно работает веб-приложение авторизации логина и пароля
Создал сервлет, в котором при запуске нужно ввести пароль и логин. Я его в программе...

Форма авторизации (проверка на ошибку ввода логина или пароля)
можно ли из таким способом сделать проверку на ошибку ввода логина или пароля или для этого надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.