olssonm/l5-zxcvbn

@dropbox 为 Laravel 实现的 zxcvbn 项目。使用 @bjeavons 的 zxcvbn-php。

v5.2 2024-04-04 06:33 UTC

README

Latest Version on Packagist Total downloads Software License Build Status

zxcvbn

为 Laravel 提供的 zxcvbn 的简单实现。此包允许您在应用中访问密码的“zxcvbn相关”数据,并且可以使用 zxcvbn 作为标准验证器。

使用 Zxcvbn-PHP@bjeavons,它又受到 zxcvbn@dropbox 的启发。

安装

通过 Composer

$ composer require olssonm/l5-zxcvbn

如果您希望使用依赖注入来使用 Zxcvbn,或者只是想快速访问类 - 将别名添加到外观

'aliases' => [
    'Zxcvbn' => Olssonm\Zxcvbn\Facades\Zxcvbn::class
]

用法

如果您已将 Olssonm\Zxcvbn 添加为别名,您可以从应用中的任何位置轻松访问 Zxcvbn

“在应用中”

use Zxcvbn;

class MyClass extends MyOtherClass
{
    public function myFunction()
    {
        $zxcvbn = Zxcvbn::passwordStrength('password');
        dd($zxcvbn);

        // array:9 [
        //     "password" => "password"
        //     "guesses" => 3.0
        //     "guesses_log10" => 0.47712125471966
        //     "sequence" => [],
        //     "crack_times_seconds" => array:4 [
        //         "online_throttling_100_per_hour" => 108.0
        //         "online_no_throttling_10_per_second" => 0.3
        //         "offline_slow_hashing_1e4_per_second" => 0.0003
        //         "offline_fast_hashing_1e10_per_second" => 3.0E-10
        //     ]
        //     "crack_times_display" => array:4 [
        //         "online_throttling_100_per_hour" => "2 minutes"
        //         "online_no_throttling_10_per_second" => "less than a second"
        //         "offline_slow_hashing_1e4_per_second" => "less than a second"
        //         "offline_fast_hashing_1e10_per_second" => "less than a second"
        //     ]
        //     "score" => 0
        //     "feedback" => array:2 [
        //         "warning" => "This is a top-10 common password"
        //         "suggestions" => array:1 [
        //         0 => "Add another word or two. Uncommon words are better."
        //         ]
        //     ]
        //     "calc_time" => 0.020488977432251
        // ]
    }
}

尝试不同的密码和短语,结果可能会让您惊讶。查看 Zxcvbn-PHP 了解更多用法和示例。

作为验证器

该包为您的应用提供了两种类型的验证。 zxcvbnzxcvbn_dictionary

zxcvbn

使用此规则,您可以设置短语需要使用 Zxcvbn 获得的最低分数才能通过。

语法

'input' => 'zxcvbn:min_value'

示例

$request->validate([
    'password' => 'required|zxcvbn:3'
]);

您还可以将规则初始化为对象

use Olssonm\Zxcvbn\Rules\Zxcvbn;

function rules() 
{
    return [
        'password' => ['required', new Zxcvbn($minScore = 3)]
    ];
}

在这个例子中,密码至少需要有“分数”3才能通过验证。当然,您可能还需要在前端使用 zxcvbn-library,以便在提交表单之前让用户知道这一点。

zxcvbn_dictionary

这更有趣一些。zxcvbn_dictionary 允许您将用户的用户名和/或电子邮件与他们的密码一起输入(您需要提供用户输入的一件物品)。验证器会检查密码是否不在用户名中,或者它们是否过于相似。

语法

'input' => 'zxcvbn_dictionary:input1,input2'

示例

$request->validate([
    'password' => sprintf('required|zxcvbn_dictionary:%s,%s', $request->username, $request->email)
]);
use Olssonm\Zxcvbn\Rules\ZxcvbnDictionary;

function rules() 
{
    return [
        'password' => ['required', new ZxcvbnDictionary($this->username)]
    ];
}

测试

$ composer test

$ phpunit

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件

© 2022 Marcus Olsson