NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
QR for Laravel

Kódy pre 2FA

Qr::otpauth() prijme URI otpauth://, ktoré už vytvoril iný balík, a zakóduje ho bez zmeny — napríklad provisioningUri z two-factor-for-laravel:

$markup = Qr::otpauth($setup->provisioningUri)       // an existing otpauth:// URI, encoded unchanged
    ->size(240)
    ->errorCorrection(ErrorCorrection::Medium)
    ->title(__('Scan with your authenticator app'))
    ->svg()
    ->toString();

Vytvorenie URI

Otpauth::totp() deleguje na builder provisioning URI z crypto-for-laravel, takže výsledok je bajtovo zhodný s URI z two-factor-for-laravel. hotp() používa rovnaké pravidlá kódovania a navyše počítadlo:

use RoundlyConsulting\Crypto\Otp\OtpAlgorithm;
use RoundlyConsulting\Qr\Payloads\Otpauth;

// byte-identical to crypto-for-laravel's provisioning URI:
$totp = Otpauth::totp(secret: $secret, account: '[email protected]', issuer: 'Acme', algorithm: OtpAlgorithm::Sha256, digits: 6, period: 30);
$hotp = Otpauth::hotp(secret: $secret, account: '[email protected]', issuer: 'Acme', counter: 0);
$parsed = Otpauth::fromUri($uri);                     // ->type(), ->issuer(), ->account()

Qr::otpauth($totp)->svg();
  • fromUri() zachová zadaný reťazec bajt po bajte; overí schému otpauth, typ totp/hotp, neprázdny účet a kanonický base32 secret.
  • Voliteľne algorithm (SHA1, SHA256, SHA512), digits 6–10 a period ≥ 1; hotp vyžaduje counter ≥ 0. URI môže mať najviac 1024 bajtov.
  • Vydavatelia s dvojbodkou (napr. Acme: Admin) sa zo zakódovaného labelu parsujú správne.

Vždy tajné

Kódy 2FA majú vždy Sensitivity::Secret — nikdy sa nememoizujú ani necachujú, servírujú sa s Cache-Control: no-store a bez ETagu — a citlivosť sa nedá znížiť. Rovnako sa zaobchádza s každým reťazcom, ktorý (po úvodných medzerách, v ľubovoľnej veľkosti písmen) začína na otpauth:, otpauth-migration: alebo WIFI:, nech prejde ktorýmkoľvek vstupným bodom — Qr::make(), Qr::text(), Qr::svg(), <x-qr-code> alebo Qr::url() s povolenou schémou; obsah WIFI: je tiež Secret, no citlivosť sa dá znížiť ako pri Qr::wifi(). Tajomstvá sú označené #[SensitiveParameter], takže sa nikdy neobjavia v stack trace.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.