Преобразование с латыни в UTF-8 на MySQL - что происходит с паролями, имеющими специальные символы? - PullRequest
0 голосов
/ 28 декабря 2018

Моя форма ввода и база данных mysql были закодированы в LATIN

. Когда я полностью перехожу на UTF-8, я не могу изменить пароли в базе данных (они закодированы).Я предполагаю, что если люди использовали специальные символы в своем пароле, а новая форма входа - UTF-8, они будут заблокированы.Правильный?(например, если они использовали и ä письмо)

Решение?Я мог бы попытаться дважды проверить их pwd для входа в систему (когда они пытаются войти в систему) по сравнению с LATIN-преобразованием их ввода ... и, если это совпадает, я автоматически заново устанавливаю их пароль снова с помощью ввода UTF8.

Это путь?

1 Ответ

0 голосов
/ 28 декабря 2018

Таблица mysql.user - это то, о чем вы спрашиваете?Или это какой-то более новый плагин?

Пароли в этой таблице не являются реальными паролями, а передаются через одностороннее шифрование, а затем сохраняются в тексте, совместимом с ascii, latin1 и utf8.,Не беспокойтесь об этом столбце в этой таблице.

Если вы делаете свое собственное управление паролями, то вы упустили несколько битов информации.Вы подключаете как utf8 или latin1?Давайте посмотрим SHOW CREATE TABLE.Храните ли вы pwd без шифрования (тем самым будучи более уязвимым)?

И как вы конвертировали свои таблицы?Есть несколько неправильных способов.Я рекомендую вам проверить их сейчас , прежде чем беспорядок усугубится.Сохраните не-ascii символ в некоторой таблице, затем выполните SELECT col, HEX(col) FROM ...;мы можем видеть, правильно ли он хранится в отличие от «двойного кодирования» или других неприятных.Подробнее обсуждение

...