stymiee/password-helper

一个PHP库,默认情况下让使用密码的最佳实践变得简单。

2.0.0 2020-06-10 17:08 UTC

This package is auto-updated.

Last update: 2024-09-07 15:17:59 UTC


README

Latest Stable Version Total Downloads Build Scrutinizer Code Quality Maintainability License

密码助手 (password-helper)

一个PHP库,默认情况下让使用密码的最佳实践变得简单。

要求

  • PHP 7.2+

注意:有一个PHP 5兼容版本可用。

安装

如果您使用 Composer 来管理项目的依赖项,只需将 stymiee/password-helper 添加到您的项目 composer.json 文件中即可。

以下是一个仅定义对密码助手依赖关系的最小 composer.json 文件示例

{
    "require": {
        "stymiee/password-helper": "^2"
    }
}

要使用PHP 5兼容版本,请使用版本1.*

{
    "require": {
        "stymiee/password-helper": "^1"
    }
}

基本用法

配置

要配置密码助手以满足您的业务需求,您可以在创建密码助手对象时设置密码策略。您可以配置以下六个因素是否需要(或不需要)以及如果需要,该密码特性的最小标准。它们是

  1. minimumLength - 设置密码必须的最小长度。(默认:10)
  2. minimumSpecialChars - 设置密码中必须包含的最小特殊字符数。(默认:1)
  3. minimumUppercase - 设置密码中必须包含的最小大写字母数。(默认:1)
  4. minimumLowercase - 设置密码中必须包含的最小小写字母数。(默认:1)
  5. minimumLetters - 设置密码中必须包含的最小字母总数。(默认:1)
  6. minimumDigits - 设置密码中必须包含的最小数字数。(默认:1)

如果您在创建密码助手时未传递任何自定义策略规则,则默认为上述值。

$passwordHelper = new Password();

等同于

$passwordHelper = new Password([
    'minimumLetters' => 1,
    'minimumDigits' => 1,
    'minimumLowercase' => 1,
    'minimumUppercase' => 1,
    'minimumSpecialChars' => 1,
    'minimumLength' => 10 
]);

要修改策略,可以通过名称和其自定义值将其传递给构造函数。下面的代码将所有规则设置为需要每种类型两个,并设置最小密码长度为十二个字符。

$passwordHelper = new Password([
    'minimumLetters' => 2,
    'minimumDigits' => 2,
    'minimumLowercase' => 2,
    'minimumUppercase' => 2,
    'minimumSpecialChars' => 2,
    'minimumLength' => 12 
]);

您只需在更改其值时传递自定义值。下面的代码仅更改了 minimumDigitsminimumLength 的值。

$passwordHelper = new Password([
    'minimumDigits' => 2,
    'minimumLength' => 12 
]);

要删除一个要求,将其值设为零。

$passwordHelper = new Password([
    'minimumSpecialChars' => 0  // Special characters are not required
]);

生成一个新密码

$password = (\PasswordHelper\new Password())->generate(); // 8TpKC>&nQA

验证密码是否符合您的密码策略

$password = \PasswordHelper\new Password();
echo var_dump($password->validateComplexity('!aa34sDDdfg7dfgdsfg2gg'));
echo var_dump($password->validateComplexity('1234'));

输出

true
false    

检查密码强度

$password = \PasswordHelper\new Password();
echo $password->checkStrength('a');
echo $password->checkStrength('qr193');
echo $password->checkStrength('8TpKC>&nQA');

输出

Very Weak
Good
Very Strong

散列密码

$hashedPassword = (\PasswordHelper\new Password())->hash('secret1234');

验证密码

$password = \PasswordHelper\new Password();
if ($password->verify('secret1234', $row['password_hash'])) {
    // Let them in
} else {
    // Authentication failure
}   

更新密码散列

$password = \PasswordHelper\new Password();
if ($password->checkForRehash($row['password_hash'])) {
    $newHash = $password->hash('secret1234');
    // ... then save the new hash ...
}

支持

如果您在使用此库时需要帮助,请首先查看此包中包含的 HELP.md 文件。它包括常见问题和它们的解决方案。

如果您需要额外的帮助,您可以在 Stack Overflow 找到我。确保当您 提问 时,将问题标记为 PHPpassword。请确保您遵循他们的 提问指南,因为提出的问题不佳将被关闭,并且我将无法帮助您。

一个好的问题将包括以下所有内容

  • 问题的描述(你试图做什么?你期望的结果是什么?你实际上得到的结果是什么?)
  • 你正在使用的代码(仅发布相关代码)
  • 您收到的任何错误信息

请勿使用Stack Overflow来报告错误。 错误可以在这里报告。这里