Проблема в том, что пароль не хэширован и не зашифрован.Как мне повысить безопасность моего метода?
Чаще всего пароли хэшируются с использованием алгоритмов хеширования SHA-x или MD-5.В таком случае разработчики хешируют пароль и сохраняют хешированную копию в базе данных или коде.Таким образом, нигде нет читаемой человеком копии.
Для аутентификации по этому паролю вы должны создать HASH для введенного пользователем пароля, а затем сравнить его с сохраненным паролем.
Если вы создаете веб-приложение, хеширование может быть выполнено в javascript перед отправкой веб-страницы, таким образом хешированный пароль путешествует по сети, что затрудняет хакерам перехват и затем их «хэш»
Хэширование Javascript выглядит следующим образом (предположим, что мы используем md5, а пароль пользователя «test»)
- сгенерируйте md 5 «test», который равен 098f6bcd4621d373cade4e832627b4f6, и сохраните его в базе данных
- На стороне клиента (javascript) получить идентификатор сеанса
- Допустим, пользователи сначала вводят "test" md5, так что результат 098f6bcd4621d373cade4e832627b4f6
- md5, снова сперед сессионным идентификатором (скажем, сессионный идентификатор - 9985), поэтому новый md5 - это f93437292fca0cf9b71bf1f3fe6c4679
- send ONLY хэш серверу
- сервер может получить идентификатор сессиииспользуя один из методов библиотеки, например, в Java, можно получить идентификатор с помощью session.getId ();
выполнить запрос, которыйаналогично следующему
выберите md5 (concat (pwd, '9985')) как newpwd из пользователей, где uname = 'xyz'
- соответствует "newpwd" с введенным пользователем значением
Если кто-то попытается отправить данные через HTTP-ответ, аутентификация не пройдет, потому что сервер каждый раз создает новый идентификатор сеанса.Поэтому, если пользователь выходит из системы и снова входит в систему, новый хешированный пароль отправляется по проводной сети.
См. Следующие ссылки для справки
Самый безопасный метод Python для хранения и восстановления паролейиз базы данных
В каком формате хранятся пароли Django в базе данных?
http://en.wikipedia.org/wiki/Salt_(cryptography)