Ochrana proti hádaniu
TwoFactor::for($user)->attempt() predvolene obmedzuje pokusy pre každého používateľa. Každý pokus sa započíta ešte pred overením, jedným atomickým zvýšením, takže aj nával súbežných pokusov dostane najviac attempts.max (predvolene 5) overení za attempts.decay sekúnd (predvolene 60). Potom vyhodí TwoFactorRateLimitedException bez akéhokoľvek overovania a vyvolá TwoFactorRateLimited. Úspešné overenie počítadlo vynuluje.
use RoundlyConsulting\TwoFactor\Exceptions\TwoFactorRateLimitedException;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;
try {
$result = TwoFactor::for($user)->attempt($request->string('code')->toString());
} catch (TwoFactorRateLimitedException $e) {
// too many failed attempts — retry after $e->secondsUntilAvailable seconds
}
if ($result->verified) {
// accepted — TOTP (replay-safe) or a single-use recovery code
}Konfigurácia
// config/two-factor.php
'attempts' => [
'max' => 5, // failed attempts before lockout
'decay' => 60, // seconds the lockout lasts
],
// or hand throttling to your own throttle: middleware
'attempts' => null,Nastavením attempts na null limiter úplne vypnete a môžete použiť vlastný middleware throttle:. Obe hodnoty musia byť celé čísla, aspoň 1 — nižšia hodnota alebo hodnota, ktorá nie je celým číslom, vyhodí InvalidTwoFactorConfigException. Limiter vypne len null; false, 'off' či 0 vyhodí výnimku a prázdna hodnota ponechá dodané limity.
Ako sa pokusy počítajú
- Kľúč je pre každý účet two-factor:{trieda modelu}:{id} cez RateLimiter Laravelu, takže používateľ a klient s rovnakým id nikdy nezdieľajú zablokovanie.
- Pokus sa započíta pred overením, takže súbežné požiadavky nedokážu prepašovať ďalšie pokusy cez limit. Započítaný zostáva, kým kód neprejde — nesprávny aj opakovane použitý kód sa teda rátajú.
- Používateľ bez potvrdenej aktivácie zlyhá ešte pred kontrolou limitera.
- TwoFactorRateLimitedException nesie secondsUntilAvailable, rovnako ako udalosť TwoFactorRateLimited — využite ho pre stav „skúste to neskôr“ alebo pre upozornenie.
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.