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 kryptomienOdoslaní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.