| Photo of the owner (print or phone) | Unlocks | Blocked by the random liveness challenge | Depth / infrared cameras (e.g. Face ID) |
| Video of the owner (replay) | Unlocks | Usually blocked: it must do the right random action within 7 s | Depth sensing, screen-reflection and texture analysis |
| Someone else's face, again and again | Unlimited tries | Rejected by distance; 5 failures lock it for 30 s | Lockouts that survive a reload, fallback to a passcode |
| Enroll your own face over the owner's | Takes over | Re-enroll only after unlocking | Passcode required to change biometrics |
| Edit the JavaScript in DevTools | Bypasses everything | Passes the lock (checks run in your browser), but the vault stays encrypted | Matching inside secure hardware or on a server |
| Copy the vault and guess the secret offline | Plain text, nothing to guess | Each guess costs 600,000 PBKDF2 rounds. A 6-digit gesture PIN (15,625 options) still falls in under an hour; a long passphrase does not | Hardware retry limits (a phone can wipe its keys after 10 wrong passcodes) |
| Reload the page to reset the lockout | Resets | Not defended: the lockout lives in memory | Counters stored in tamper-resistant storage |
| Steal the stored face template | Readable in localStorage | Only 128 numbers, not a photo; delete anytime | Encrypted templates in a secure enclave |