Web application security breaches cost Indian businesses an estimated 17 crore per incident in 2025. Most of these breaches exploit well-known, preventable vulnerabilities. This checklist covers every critical security layer you need to address before going live.
Use this as a pre-launch security review. Items marked critical are non-negotiable before production.
OWASP Top 10 in 2026
- Broken Access Control 🔴
- Cryptographic Failures 🔴
- Injection (SQL, NoSQL, OS) 🔴
- Insecure Design
- Security Misconfiguration
- Vulnerable Components
- Identity and Authentication Failures 🔴
- Software and Data Integrity Failures
- Logging and Monitoring Failures
- SSRF
XSS (Cross-Site Scripting) Prevention
- 🔴 Escape all output - never insert user data into HTML without escaping. React and Vue do this by default.
- 🔴 Content Security Policy - restricts which scripts the browser will execute.
- Use
httpOnlyandSameSite=Stricton session cookies.
httpContent-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
CSRF Protection
- 🔴 SameSite=Lax or Strict cookies - blocks most CSRF attacks on their own.
- Use CSRF tokens on all state-changing forms (Django handles this automatically).
- Verify Origin and Referer headers on sensitive endpoints.
SQL Injection Prevention
- 🔴 Always use parameterised queries or ORMs - never concatenate user input into SQL.
- 🔴 Use the principle of least privilege for your database user.
python# Never do this
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
# Always use parameterised queries
cursor.execute("SELECT * FROM users WHERE email = %s", (email,))
# or via ORM
User.objects.filter(email=email).first()
Authentication Security
- 🔴 Hash passwords with bcrypt or Argon2
- 🔴 Enforce 2FA for admin accounts
- Rate-limit login endpoints at maximum 5 attempts per minute per IP
- Use JWT short expiry (15 min) with refresh tokens in httpOnly cookies
Security Headers Checklist
- ✓ Content-Security-Policy
- ✓ X-Content-Type-Options: nosniff
- ✓ X-Frame-Options: DENY
- ✓ Strict-Transport-Security: max-age=31536000; includeSubDomains
- ✓ Referrer-Policy: strict-origin-when-cross-origin
Rate Limiting and Abuse Prevention
- Limit all public endpoints - 100 req/min for anonymous, 1000 for authenticated
- Implement CAPTCHA on login, register, and contact forms
- Use Cloudflare WAF for Layer 7 DDoS protection
- Log all 4xx/5xx responses and alert on anomalies
Ready to apply these strategies?
Want a security audit before your launch? Our team performs comprehensive web application security reviews.
Get a Free Consultation →