rebelinblue/laravel-zxcvbn

Laravel 5.4 及以上版本中使用 @dropbox 的 zxcvbn 项目的服务提供者

1.5.0 2023-03-06 19:01 UTC

This package is auto-updated.

Last update: 2024-09-06 22:07:12 UTC


README

Build Status Code Coverage Software License

本包提供了一个验证器,使用 Dropbox 的 zxcvbn 密码强度估计器;它使用来自 bjeavonsPHP 实现

安装

本包可以通过 Composer 安装。

composer require rebelinblue/laravel-zxcvbn

在 Laravel 5.5 中,包将自动注册服务提供者。在 Laravel 5.4 中,您必须在 config/app.php 中手动注册此服务提供者,将 REBELinBLUE\Zxcvbn\ZxcvbnServiceProvider::class 添加到 providers 数组中。

还有一个可选的 Zxcvbn 门面;在 Laravel 5.5 中,它将自动注册。在 Laravel 5.4 中,您必须手动在 config/app.php 中的 aliases 数组中添加以下内容以注册门面。

    'Zxcvbn' => REBELinBLUE\Zxcvbn\ZxcvbnFacade::class,

您可以选择使用以下命令发布本包的翻译,但只有在您希望更改它们时才需要。

php artisan vendor:publish --provider="REBELinBLUE\Zxcvbn\ZxcvbnServiceProvider"

用法

如果您已添加别名,您可以通过门面在代码的任何地方访问 Zxcvbn。

<?php

use Zxcvbn;

class MyCustomClass
{
    public function someMethod()
    {
        $strength = Zxcvbn::passwordStrength('Pa$$w0rd');
        dd($strength);
    }    
}

然而,您可能想将其用作验证器。此包添加了一个名为 "zxcvbn" 的规则。

示例

<?php

$input = [ /* user input */ ];
$validator = Validator::make($input, [
    'password' => 'required|min:6|zxcvbn',
]); 

有两个可选参数,所需的分数(0 到 4)和要比较的其他字段的逗号分隔列表,例如,为了确保一个不包含用户名或电子邮件的强密码,您将使用

'password' => 'required|min:6|zxcvbn:4,username,email',

评分如下

  • 0 - 非常容易被猜到:危险的密码。(猜测次数 < 10^3)
  • 1 - 非常容易被猜到:防止受限制的在线攻击的保护。(猜测次数 < 10^6)
  • 2 - 有点容易被猜到:防止不受限制的在线攻击的保护。(猜测次数 < 10^8)
  • 3 - 安全不可猜到:防止离线慢速哈希场景的中等保护。(猜测次数 < 10^10)
  • 4 - 非常难以猜到:防止离线慢速哈希场景的强保护。(猜测次数 >= 10^10)