Authentication vulnerabilities are among the most common and most consequential security failures in web applications. Credential stuffing, session fixation, token leakage, and insecure password storage appear repeatedly in breach reports. Most of these failures come from implementing authentication incorrectly rather than from novel attack techniques.
Password Storage: Bcrypt or Argon2, No Exceptions
Passwords must never be stored in plaintext or with weak hashing algorithms (MD5, SHA-1, SHA-256). Use bcrypt with a work factor of at least 10, or Argon2id — the current OWASP recommendation. These algorithms are intentionally slow, which makes brute-force attacks against a leaked database computationally expensive.
Session Management
- Generate session IDs with cryptographically secure random number generators.
- Invalidate session IDs on every privilege level change (including login).
- Set session cookies as HttpOnly (no JavaScript access) and Secure (HTTPS only).
- Use SameSite=Lax or SameSite=Strict to mitigate CSRF attacks.
- Implement session expiration and absolute timeout regardless of activity.
JWT: When to Use It and When Not To
JWTs are appropriate for stateless, short-lived tokens in API authentication. They are commonly misused as session tokens in browser applications, which creates problems: JWTs cannot be revoked before expiry, and they grow large when claims are added, increasing cookie or header size.
Use short expiry (15 minutes for access tokens), pair with refresh token rotation, and store access tokens in memory rather than localStorage to mitigate XSS risk.
OAuth 2.0 and OpenID Connect
For social login and third-party integrations, use a well-implemented OAuth 2.0 + OIDC library rather than building the protocol from scratch. Use PKCE (Proof Key for Code Exchange) for all public clients. Validate all tokens on the server side — never trust client-side validation alone.
Multi-Factor Authentication
TOTP-based MFA (Google Authenticator, Authy) is the most practical option for most web applications. Implement MFA as required for privileged roles from the start, and offer it as optional for standard users. SMS-based MFA is better than nothing but vulnerable to SIM-swapping attacks.
Building a product that needs enterprise-grade authentication?
Asquarify implements authentication systems that follow security best practices — not shortcuts. Talk to us about your security requirements.
Get in touch