@Wet_Dumplings

Как сделать выборку символов с проверкой позиций?

Здравствуйте!

Есть бд с табличкой users и полями <логин>, <пароль>. Предположим, возьму запись [('admin', '123456')]
как сделать так, чтобы при вводе логина `admin` вылез "ввод пароля" вида: (предположим) введите позицию 1 = [вставитьЦифру(1)], введите позицию 6 = [[вставитьЦифру(6)] и так, чтобы при логине каждый раз было разное число позиций, который нужно ввести (тобишь пароль пользователь вводит не целиком а только определенные позиции)

А то не смог найти ни как выдернуть определенное поле с нужным паролем ( кроме как вывести его -
"SELECT password FROM users WHERE login=?",(currentLogin,))
) ни как реализовать описанный выше метод верификации пользователя (т.к. помимо ввода случайных позиций нужно еще, очевидно, их проверить - но не смог опятьже отыскать как сделать текстовый массив из поля SQL таблички)
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Двадцать первый век, у миллиардных корпораций каждый месяц утекает по 200 млн учетных записей прям из БД, а у нас пароли в базе открытым текстом.
Единственное место, где так пароль проверяется, я встречал только в SecureBoot, и это дико неудобно.
Но если интересует реализация, могу предложить следующее:
  1. Сохранить в БД хешированные с солью значения вида Pxxx, xAxx, xxSx и т.д.
  2. добить хеши до максимальной длины пароля, чтобы не палить его длину
  3. использовать вместо xxx разную строку для каждой позиции символа исходного пароля
  4. при вводе очередного символа проверять наличие у пользователя нужного хеша
  5. не считать, что этот способ хранения пароля является безопасным

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы