Генеруйте безпечні й легко запам'ятовувані passphrases у PHP за допомогою PHP Passphrase

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 лютого, 2026
Потрібні зручні й безпечні тимчасові паролі для вашого Laravel‑проєкту? PHP Passphrase генерує читабельні пасфрази за методом EFF, має вбудовану підтримку Laravel, підтримку кастомних словників і просте налаштування.

Фрази-паролі з'єднують кілька випадкових слів, наприклад sphere-quartz-bright-flame, щоб отримати облікові дані, які одночасно безпечні та легкі для читання й запам’ятовування. PHP Passphrase, створений Nico Bleiler, генерує такі фрази за рекомендованою EFF методикою, комбінуючи випадкові слова з EFF long word list. Пакет відтворює реалізацію Bitwarden на Rust і має вбудовану підтримку Laravel, а також можливість роботи як самостійна PHP-бібліотека.

Пакет корисний для додатків, які генерують тимчасові паролі або коди відновлення, або в будь-яких випадках, коли людсько-зрозуміла та безпечна послідовність слів краща за випадкову рядкову комбінацію символів.

Основні можливості

PHP Passphrase пропонує кілька опцій для генерації фраз-паролів:

Початок роботи

Встановіть пакет через Composer:

composer require nicobleiler/php-passphrase

Laravel автоматично знайде service provider. Додаткових налаштувань не потрібно, щоб почати генерувати фрази.

Генерація фраз-паролів

У Laravel використовуйте фасад Passphrase для генерації:

use NicoBleiler\Passphrase\Facades\Passphrase;
 
// Default: 3 words, hyphen separator, no capitalize, no number
Passphrase::generate();
// "unadvised-stubble-squid"
 
// Customize the output
Passphrase::generate(
    numWords: 5,
    wordSeparator: '~',
    capitalize: true,
    includeNumber: true,
);
// "Reggae~Blip~Prayer~Tabasco~Football5"

Впровадження залежностей

Пакет реєструє PassphraseGenerator як singleton у контейнері Laravel, тож його можна інжектити в класи:

use NicoBleiler\Passphrase\PassphraseGenerator;
 
class AuthController
{
    public function __construct(
        private PassphraseGenerator $passphrase,
    ) {}
 
    public function temporaryPassword(): string
    {
        return $this->passphrase->generate(
            numWords: 4,
            capitalize: true,
            includeNumber: true,
        );
    }
}

Самостійне використання

Пакет працює й без Laravel. Створіть екземпляр PassphraseGenerator напряму:

use NicoBleiler\Passphrase\PassphraseGenerator;
 
$generator = new PassphraseGenerator();
echo $generator->generate(); // "zone-statue-corporal"

Користувацькі списки слів

Клас WordList підтримує завантаження слів з файлів або масивів:

use NicoBleiler\Passphrase\WordList;
use NicoBleiler\Passphrase\PassphraseGenerator;
 
// From a file (plain text or EFF diceware format)
$wordList = WordList::fromFile('/path/to/wordlist.txt');
 
// From an array
$wordList = WordList::fromArray([
    'pizza',
    'whisk',
    'juice',
    'beyond',
    'quartz',
    'flame',
    'vortex',
    'bright',
    'sphere',
]);
 
$generator = new PassphraseGenerator($wordList);
echo $generator->generate(numWords: 4);

У Laravel ви можете вказати шлях до власного файлу списку слів через опублікований конфіг:

php artisan vendor:publish --tag=passphrase-config

Потім вкажіть шлях у config/passphrase.php:

'word_list_path' => resource_path('wordlists/my-custom-list.txt'),

Налаштування

Опублікований файл конфігурації дозволяє задати значення за замовчуванням для всіх опцій генерації:

return [
    'num_words' => 3,
    'word_separator' => '-',
    'capitalize' => false,
    'include_number' => false,
 
    // null = bundled EFF long word list
    // Or set an absolute path to a custom word list file
    'word_list_path' => null,
];

Щоб дізнатися більше про PHP Passphrase та переглянути вихідний код, відвідайте репозиторій на GitHub.

Популярні

Logomark Logotype

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення