Проблема входа в систему Python и Mysql - PullRequest
0 голосов
/ 03 сентября 2018

Изображение базы данных

Привет. Я создал систему входа в систему с помощью python и MySQL, но она не работает правильно, потому что, если я введу имя пользователя, которое находится в БД, это имя пользователя может работать со всеми паролями из listforPw. Пожалуйста, прочитайте следующий код и посмотрите изображение, которое я загрузил:

    mycursor.execute('SELECT * FROM users')
myresult = mycursor.fetchall()
listforName = []
listforPw = []
checkUsername = input('Insert your username  : ' )
checkPassword = input('Insert your password : ')
for row in myresult:
    listforName.append(row[3])
    listforPw.append(row[4])
if checkUsername in listforName and checkPassword in listforPw:
    print('You have logged in with succes !')
else:
    print('Your credentials do not exist !')

Так что вопрос в том, что я не знаю, как я могу проверить, совпадает ли имя пользователя с паролем из строки имени пользователя.

1 Ответ

0 голосов
/ 03 сентября 2018

Ваш код проверяет, что вы описали. if checkPassword in listforPw.

Вместо этого запросите только интересующего вас пользователя и сравните пароль для единственного возвращенного пользователя. Нравится

mycursor.execute('SELECT * FROM users WHERE username = %s', 'theUserName')

Кроме того, НИКОГДА не храните пароли таким образом. Используйте хеши https://en.wikipedia.org/wiki/Cryptographic_hash_function

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

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