На самом деле, есть куда улучшаться.
Первое: Вы должны добавить случайное соль к алгоритму хеширования для защиты от атак перед вычислением. (поиск Радужный стол )
Второе: Вы должны получить значение user_password
из БД и выполнить сравнение на стороне PHP.
Важно
Заявления, которые вызывают PASSWORD (), могут быть записаны в журналах сервера или в файле истории, например ~ / .mysql_history, что означает, что пароли могут быть прочитаны любым, кто имеет доступ к этой информации. См. Раздел 5.3.2, «Защита паролем в MySQL».
Источник: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_password
В-третьих: Не используйте MD5
Это хороший алгоритм хеширования, но он считается нарушенным в целях безопасности. Если вы используете PHP 5.3 или новее, используйте crypt , с CRYPT_BLOWFISH.
CRYPT_BLOWFISH в PHP является реализацией хеша Bcrypt. Bcrypt основан на блочном шифре Blowfish и использует дорогостоящую настройку ключей для замедления алгоритма.
Также: не используйте LIMIT в своем запросе, вместо этого наложите УНИКАЛЬНОЕ ограничение на user_contact_email
. Использование LIMIT - это уловка, которая может маскировать дубликаты электронных писем пользователей и приводить к неожиданным результатам, когда дубликаты электронной почты каким-либо образом вводятся.
И наконец: Почему бы вам не использовать стандартную библиотеку .
Безопасность, как правило, намного сложнее и с более невидимыми возможностями взломать, чем может решить большинство программистов в одиночку, использование стандартной библиотеки почти всегда является самым простым и наиболее (если не единственным) доступным вариантом защиты. (также читайте: Помогите мне сделать безопасным хранение моего пароля )