Hash passwords with a slow, purpose-built algorithm:
• Argon2id — the current gold standard. Winner of the Password Hashing Competition. Memory-hard, resistant to GPU cracking.
• bcrypt — widely supported, proven over 25 years. Still good for most applications.
• scrypt — memory-hard alternative to bcrypt.
Always use a unique random salt per password (done automatically by the algorithms above). Set the cost factor high enough that hashing takes 100–500ms on your server hardware.
• MD5 — cracks in milliseconds on modern GPUs. Entire MD5 databases pre-computed.
• SHA-1 / SHA-256 — fast hashing algorithms designed for speed, not password storage. A GPU can compute billions per second.
• Plain text — any breach immediately exposes every password. Enables credential stuffing everywhere those users have accounts.
Credential stuffing only works because other sites stored passwords poorly. If your site is breached, proper hashing means the attacker gets a list of useless hashes — not a credential stuffing list for the next victim.
Ask your team how the password reset flow works. Emailed reset links that don’t expire and “security question” flows are high-risk patterns that attackers specifically target.