fusionspim/php-password-checker

此软件包已被 弃用 并不再维护。没有建议的替代软件包。

当用户选择新密码时进行感应检查

5.0.1 2022-07-28 15:42 UTC

This package is auto-updated.

Last update: 2022-11-29 10:32:20 UTC


README

密码长度必须至少为10个字符,且不能是常用密码 - 无法覆盖此限制。

拒绝看起来像数字的密码,以排除明显的纪念日和电话号码。

所有密码检查均 不区分大小写

$checker = new PasswordChecker;
$checker->validate('abc123'); // throws PasswordException (too short)
$checker->validate('password123'); // throws PasswordException (too common)
$checker->validate('123-456-7890'); // throws PasswordException (too numeric)
$checker->validate('31/12/1999'); // throws PasswordException (too numeric)
$checker->validate('we love php'); // returns true

就是这样。虽然你可以添加更多(可选,但推荐)的检查和限制。

密码重用

通过在应用程序中存储以前密码的哈希值并传递它们来防止密码重用

$checker = new PasswordChecker;
$checker->setPreviousPasswords($arrayOfHashes); // generated from password_hash()
$checker->validate($userSuppliedPassword);

密码确认

如果您要求用户确认他们的新密码,也可以传递它 - 仅为了确保所有检查都能一致处理

$checker = new PasswordChecker;
$checker->setConfirmation($userSuppliedConfirmation);
$checker->validate($userSuppliedPassword);

用户或应用程序明显

提供用户/应用程序上下文中明显的单词的黑名单。如果它们 (即不一定等于)用户提供的密码中,则验证将失败

$checker = new PasswordChecker(['clem', 'fandango', 'MyAmazingApp']);
$checker->validate('myamazingapp'); // throws PasswordException
$checker->validate('myamazingapp123'); // throws PasswordException
$checker->validate('clemfandango'); // throws PasswordException
$checker->validate('fandango123'); // throws PasswordException

复杂性要求

可以启用复杂性要求,以要求用户密码包含小写字母、大写字母、数字和特殊字符。

默认情况下禁用,因为这不是一个 推荐的方案

$checker = new PasswordChecker;
$checker->setComplexityRequirements([
    PasswordChecker::REQUIRE_LOWERCASE,
    PasswordChecker::REQUIRE_UPPERCASE,
    PasswordChecker::REQUIRE_NUMBER,
    PasswordChecker::REQUIRE_SYMBOL
]);
$checker->validate('myamazingapp'); // throws PasswordException
$checker->validate('myamazingapp123'); // throws PasswordException
$checker->validate('myamazongpp123!'); // throws PasswordException
$checker->validate('Myamazingapp123!); // return true