Вопрос
Есть база данных (MySQL), в ней таблица, в которой хранятся логины и пароли зарегистрированных пользователей. Авторизация проходит путем передачи логина и пароля из формы соответствующему скрипту (PHP). Опасно ли это с точки зрения безопасности? А если пароли вытащат из базы? Желательно еще, чтобы была возможность напоминания пароля (выслать на e-mail).
Ответ
Есть в php функция шифрования md5. Ее достоинством является то, что по результату никакими стараниями нельзя получить исходный ключ, разве что простым перебором. Получаем такой алгоритм:
* При регистрации пользователь вводит пароль.
* Пароль шифруется с помощью md5.
* Шифр хранится в БД.
* При входе зарегистрированный пользователь также вводит логин и пароль.
* Пароль шифруется с помощью md5.
* Из БД вытаскивается шифр этого пользователя и сравнивается с полученным.
* Если не одинаковы — пошел вон, взломщик. Иначе — добро пожаловать.
Итог: пароль нигде не хранится. Украсть с сервера его нельзя, даже если получил доступ к БД.
Это все равно, что сказать: фамилию нашего сотрудника мы вам не скажем, но сумма ASCII-кодов в его фамилии, навороченная черт знает как, равна … (и 32 цифры)
А вместо напоминания можно, как в яху-конфах или других, сделать. Там пароль, если забыл, генерируется заново и высылается на зарегистрированный в системе адрес.
Random, Voland
Copyright 2000-2004 Сообщество Чайников
Контактная информация