Store passwords as salted, slow hashes (Argon2id, bcrypt, or scrypt). Never store plaintext or reversible encryption. Use per-user salts, optional pepper, and enforce strong password policies.
Secure password storage means resisting offline attacks:
Upgrade cost on login:
if (needsRehash(hash)) { newHash = hashPassword(password) }