Как проверить надёжность пароля
Короткий ответ
Проверьте длину и наличие нужных символов:
<?php
function passwordErrors(string $password): array
{
$errors = [];
if (mb_strlen($password) < 8) {
$errors[] = 'at least 8 characters';
}
if (!preg_match('/\p{L}/u', $password)) {
$errors[] = 'a letter';
}
if (!preg_match('/\d/', $password)) {
$errors[] = 'a digit';
}
return $errors;
}
echo json_encode(passwordErrors('abc')), "\n";
echo json_encode(passwordErrors('correct horse 42'));Результат:
["at least 8 characters","a digit"]
[]Длина важнее сложности
Длинная фраза надёжнее короткого пароля со значками. Не ограничивайте длину сверху слишком строго и не запрещайте пробелы — а хранить пароль всё равно нужно только в виде password_hash().
Функции из этого ответа
- preg_match — Проверяет строку по регулярному выражению.
- mb_strlen — Возвращает количество символов в строке.
- password_hash — Создаёт хеш пароля для хранения в базе.