Вы должны проверить свои пароли, убедившись, что они безопасны, а не что они небезопасны.
public function password_is_secure($password) {
// quick obvious test
if (is_numeric($password)) {
// FAIL: 'Your password cannot be all numbers.'
} elseif (strlen(count_chars($password, 3)) < 4) {
// FAIL: 'Your password needs to have a variety of different characters.'
}
// levenshtein distance test (test similarity to common passwords)
$name = $_POST['name'];
$email = $_POST['email'];
$badPasswords = array($name, $email, 'password', 'password1', 'password123', '1234abcd', 'abcd1234', '12345678', '1234567890');
foreach($badPasswords as $bad) {
if (levenshtein($password, $bad) < 6) {
// FAIL: 'Your password is too similar to your name or email address or other common passwords.'
}
}
return true;
}
Подключите более подходящие «геттеры» для $name
и $email
и настройте способ обработки передаваемых сообщений об ошибках, а вышеприведенный метод даст вам некоторую справедливость. Вы можете «настроить» его, изменив допустимое расстояние Левенштейна (в настоящее время 6).
Я бы также рекомендовал расширить список $badPasswords
, включив в него набор самых распространенных паролей .
И ради любви к какому-то божеству, запишите и хэшируйте свои пароли перед тем, как сохранить их в базе данных.