Multi-Factor Authentication and Account Recovery
Strengthen authentication beyond passwords with MFA, and design secure account recovery flows that do not become a backdoor around your protections.
Multi-Factor Authentication and Account Recovery is a free Secure Coding & OWASP Top 10 for Backend lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Secure Coding & OWASP Top 10 for Backend learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Beyond the Password
Strong access control and good session management still rest on one assumption: the user is who they claim. Passwords alone are weak. Multi-factor authentication adds layers so a stolen password is not enough.
The Three Factors
Authentication factors fall into categories:
- Something you know — password, PIN
- Something you have — phone, hardware key
- Something you are — fingerprint, face
MFA combines two or more different categories.
TOTP Authenticator Apps
Time-based One-Time Passwords generate a 6-digit code from a shared secret and the current time. The server computes the same code to verify.
import pyotp
totp = pyotp.TOTP(user_secret)
is_valid = totp.verify(submitted_code)Why SMS Is Weaker
SMS codes are better than nothing but vulnerable to SIM swapping and interception. Prefer TOTP apps or hardware keys; reserve SMS as a last-resort option.
Hardware Keys and WebAuthn
WebAuthn uses public-key cryptography with a hardware or platform authenticator. There is no shared secret to phish — the strongest widely available MFA.
Backup Codes
What if a user loses their phone? Issue one-time backup codes at enrollment. Store them hashed, just like passwords, and invalidate each after use.
stored = hash(backup_code)
# on use: verify then mark consumedRecovery Is an Attack Surface
Account recovery often bypasses MFA. If recovery only needs an email link, an attacker who controls the inbox owns the account. Recovery must be as strong as login.
Secure Recovery Tokens
Recovery links should use a high-entropy, single-use, short-lived token, stored hashed and invalidated on use or password change.
token = secrets.token_urlsafe(32)
store(hash(token), expires_in=900) # 15 minutesAvoid Recovery Pitfalls
- Do not reveal whether an email exists (enumeration)
- Rate-limit recovery requests
- Notify the user when recovery is initiated
- Require re-enrollment of MFA after a full reset
Step-Up Authentication
For sensitive actions — changing email, large transfers — require a fresh factor even within an active session. This step-up limits the damage of a hijacked session.
Rate-Limiting the MFA Step
The MFA code entry is itself a target. A six-digit code has only a million possibilities, so without limits an attacker can brute-force it. Rate-limit and lock out after a few wrong codes, and expire each code quickly.
Quick Check
Test your MFA and recovery knowledge.
Recap
You strengthened authentication:
- MFA combines factors from different categories
- Prefer TOTP and WebAuthn over SMS
- Provide hashed backup codes
- Make recovery as strong as login with single-use, expiring tokens
- Use step-up auth for sensitive actions
Frequently asked questions
Is the “Multi-Factor Authentication and Account Recovery” lesson free?
Yes — the full text of “Multi-Factor Authentication and Account Recovery” is free to read here on the web, and the Secure Coding & OWASP Top 10 for Backend course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Secure Coding & OWASP Top 10 for Backend course, upgrade to CoddyKit PRO.
What will I learn in “Multi-Factor Authentication and Account Recovery”?
Strengthen authentication beyond passwords with MFA, and design secure account recovery flows that do not become a backdoor around your protections. You practise Secure Coding & OWASP Top 10 for Backend with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Secure Coding & OWASP Top 10 for Backend?
No prior experience is required. Secure Coding & OWASP Top 10 for Backend on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Multi-Factor Authentication and Account Recovery” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Secure Coding & OWASP Top 10 for Backend lesson?
Yes. Every Secure Coding & OWASP Top 10 for Backend lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Implementing Strong Access Control
- Secure User Authentication Mechanisms
- Session Management Best Practices
- Multi-Factor Authentication and Account Recovery