Главная > Технологии > Алгоритмы > MD5 Хранение паролей в базе данных. md5() + сольВ этой статье я расскажу как безопасно хранить пароли в базе данных 1 способ. Храним пароль как есть. Например, если ввели пароль "fuckoff", то он так и сохранится. Минус в том, что при взломе БД злоумышленник получает все пароли в явном виде. 2 способ. Храним пароль в зашифрованном виде, используя алгоритмы шифрования md5, sha1 и т.д. Например, md5('loveyou') = "f74a10e1d6b2f32a47b8bcb53dac5345" При взломе злоумышленник получит зашифрованные пароли и не сможет их расшифровать, т.к шифрование необратимое. Но он может методом перебора шифровать различные комбинации символов и, сравнивая полученный хеш с украденным хешом пароля, найти исходный пароль. На первый взгляд кажется невозможным перебрать огромное количество комбинаций. Однако у большинства пользователей пароль представлен цифрами, словарными словами и другими простыми комбинациями символов. Поэтому задача упрощается (особенно, если пароль представлен цифрами). Кроме того, существуют сервисы, которые хранят терабайты хешей паролей (Rainbow tables). Например, сервис http://gdataonline.com/, содержит 1 133 000 000 паролей. Взлом пароля "loveyou" занимает сотые доли секунды 3 способ. Храним пароль в зашифрованном виде, но добавляя несколько случайных символов, уникальных для
каждого пользователя (так называемая соль). А еще лучше хранить двойной md5 с солью. Взломать такой вышеупомянутым
способом практически невозможно. В таблице user нам потребуется два поля: Например, авторизация пользователя // $user - информация о пользователе из таблицы user if (md5(md5($_POST['password']).$user['salt']) == $user['password']) { // проверка прошла успешно. логиним! } Где брать соль? Необходимо в скрипте регистрации генерировать соль для каждого нового пользователя. Для этого можно воспользоваться следующей функцией function generateSalt() { $salt = ''; $length = rand(5,10); // длина соли (от 5 до 10 сомволов) for($i=0; $i<$length; $i++) { $salt .= chr(rand(33,126)); // символ из ASCII-table } return $salt; } Различные варианты соления в известных движках:
Главная > Технологии > Алгоритмы > MD5 |