Последнее сообщение о паролях
Я получил немного не по теме и многое рассказал об этом. Тидбит:
Как только вы довольны паролем, они выбрали сначала зашифровать его с помощью PHP, а затем сохранить. Следующая функция шифрования паролей тоже не моя идея, но решает ряд проблем. Шифрование в PHP не позволяет людям на общем сервере перехватывать ваши незашифрованные пароли. Добавление чего-либо для пользователя, которое не изменится (я использую электронную почту, так как это имя пользователя для моих сайтов) и добавление хэша (SALT - это короткая постоянная строка, которую я изменяю для каждого сайта) повышает устойчивость к атакам. Поскольку ОСВ находится внутри пароля, и пароль может быть любой длины, становится почти невозможно атаковать это с помощью радужной таблицы. Кроме того, это также означает, что люди не могут изменить свою электронную почту, и вы не можете изменить ОСВ, не аннулировав пароль каждого.
function password_crypt($email,$toHash) {
$password = str_split($toHash,(strlen($toHash)/2)+1);
return hash('sha256', $email.$password[0].SALT.$password[1]);
}
Итак, при первом вводе пароля пользователя в псевдокоде:
define(SALT,'blah');
$hashed_password = password_crypt($email,$password);
INSERT INTO users (email,hashed_password) VALUES ($email,$hashed_password);
Затем для проверки последующего входа в систему псевдокодом:
define(SALT,'blah');
$user_hashed_password = password_crypt($_POST['username'],$_POST['password']);
SELECT email FROM users WHERE email = ? AND hashed_password = $user_hashed_password LIMIT 1
Если вы получили строку назад, действительный логин.