Найти тему
Clickproject|Веб студия

Разработка своей системы управления сайта. Защита пароля.

Добрый день.

Продолжаем тему разработки своей системы управления сайта, сегодня речь пойдёт о защите паролей пользователя. Советы, рекомендации, примеры.

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

Для хранения паролей пользователей рекомендуется использовать md5 хеш.
Почему? Его почти не реально раскодировать, только лишь пытаться подбирать пароль. Но на свете не мало умельцев которые методом перебора умудряются всё же найти "ключик". Чтобы этого не случилось - не делайте простые хеш суммы.
Если в руках злоумышленника оказался хеш сумма пароля, её можно в любом случае начать перебирать. Чтобы усложнить задачу используйте "соль".
Соль - обычно хаотичный и случайный набор символов который шифруется вместе с паролем, пример: md5($password.$salt);

Где $password - наш пароль, а $salt - "соль" (пример соли 23%YG1#E).

Примеры защиты пароля от автора.

Ниже приведу пример функции для записи в базу паролей.

function create_pass($pass, $secret) {
$pass = md5(md5($pass.$secret).$pass);
$pass = strrev($pass);
$pass = sha1($pass);
$pass = bin2hex($pass);
return md5(md5($pass.$secret).$pass.$secret);
}

Для генерации "соли" следующая функция используется.

function mksecret($length = 20) {
$set = array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8","9");
$str = "";
for ($i = 1; $i <= $length; $i++)
$str.= $set[rand(0, count($set)-1)];

return $str;
}

Как это всё вместе сложить?

Пример использования данных функций прост:

$pass = "QWERTY123456";
$secret = mksecret( );
$password = create_pass( $pass, $secret);

Почему именно так?

Пароль приходит у нас в любом случае или GET или POST запросом, соль генерируется в переменной $secret. Засунуть сразу mksecret() в create_pass нельзя, потому что при записи в базу данных, "соль" в пароле и "соль" в отдельном поле базы будет разная, тем самым проверка на правильность пароля в скрипте не пройдёт.

Вот один из простых примеров работы с паролями пользователей. До новых встреч!

Если Вас заинтересовала информация или Вы хотите заказать систему управления или сайт - обращайтесь к нам на нашем сайте https://clickproject.ru/