mirsite

      главная страница     письмо     Добавить в избранное

    PHP // MySQL // .htaccess


   Об авторе >>>



Главная страница

PHP

     Статьи

     Функции

     Книги

MySQL

Apache и .htaccess

Полезные сервисы

Новости

Ссылки

Карта сайта



Статьи



Хэширование паролей функцией md5



Среди множества функций PHP есть функция md5. В ее основе алгоритм MD5 RSA Data Security, Inc. Она возвращает так называемый хэш строки, который представляет собой 32-значное шестнадцатеричное число. Для каждой строки он уникален, вероятность совпадения его у разных строк ничтожно мала.

Хэширование - это вовсе не шифрование. Шифрование предполагает некий ключ, с помощью которого шифр можно перевести в читаемый текст. У хэширования такого ключа нет. Можно сказать, что это шифрование "в одну сторону", без возможности дешифровки.

Функцию md5 очень удобно использовать для хранения паролей в базе сайта. Я неоднократно сталкивался с ситуацией, когда в базе пароли лежат в явном виде. Понятно, что в случае взлома такой базы хакер получит доступ к целой коллекции паролей. И ничего хорошего в этом нет.

Во-первых, среди них могут оказаться и пароли пользователей с админскими полномочиями, а если хакер получил возможность видеть базу, но не управлять ей, он будет очень рад возможности воспользоваться таким подарком.

Во-вторых, опыт показывает, что как минимум четверть пользователей применяет один и тот-же пароль везде - от случайных форумов до своего любимого и основного почтового ящика. Пользователи конечно сами виноваты, но и авторам хорошего сайтам подставлять их лишний раз не следует. Посетители вряд-ли обрадуются, если узнают, что кто-то получил доступ к их ящикам через ваш сайт.

Поэтому на приличных сайтах пароли хранят в хэшированном виде. Когда пользователь вводит свой пароль, его тоже пропускают через md5 и сравнивают с лежащим в базе хэшем - если строки совпали, значит пользователь ввел именно тот пароль, хэш которого лежит в базе.

На самом деле, хэширование здорово защищает пароль, но абсолютной защиты все-таки не дает. Расшифровать его нельзя, но можно подобрать. Методом банального перебора. Программ для этого дело можно найти в Интернете довольно много, это не проблема. Были бы время и мощный компьютер. Вооружившись однажды такой программкой, я обнаружил что хэш трех-четырехзначных строк подбирается буквально за пару минут. А вот подбора моего пробного "пароля" из 6 знаков я так и не дождался - терпения не хватило. Так что хранящийся в базе хэш 8-10 значного пароля дает не абсолютную, но очень высокую степень защиты.

В общем, когда вы программируете сайт, не поленитесь, встройте в него хэширование паролей. И посоветуйте посетителям при регистрации придумывать пароль как минимум из 6-8 знаков. А когда бродите по незнакомым сайтам - выбирайте для каждого свой пароль - ведь сайт может оказаться "дырявым". Ну или возьмите какой-нибудь общий пароль для всех одноразовых регистраций, а уж если будете пользоваться этим форумом и сервисом часто - смените его на что-то более безопасное.

Александр Мироненко
www.mirsite.ru






Все публикации >>>




  

Александр Мироненко, MirSite.ru © 2005-2014       
Сайт обновлен 24 июня 2019 года