Security Assessment Checklist
A comprehensive checklist for assessing application and infrastructure security, covering OWASP Top 10 and common vulnerabilities.
How to Use This Checklist
This checklist is designed for:
- Pre-deployment security reviews
- Regular security assessments
- New application onboarding
- Compliance verification
Rating Scale:
- ✅ Implemented and verified
- ⚠️ Partially implemented or needs improvement
- ❌ Not implemented
- N/A Not applicable
1. Authentication & Access Control
Authentication
| Item |
Status |
Notes |
| Multi-factor authentication available |
|
|
| Strong password policy enforced (12+ chars, complexity) |
|
|
| Password hashing uses modern algorithm (bcrypt, Argon2) |
|
|
| Account lockout after failed attempts |
|
|
| Session timeout configured appropriately |
|
|
| Secure session token generation (cryptographically random) |
|
|
| Sessions invalidated on logout |
|
|
| Sessions invalidated on password change |
|
|
| “Remember me” tokens are secure |
|
|
| Password reset is secure (time-limited tokens) |
|
|
Authorization
| Item |
Status |
Notes |
| Principle of least privilege applied |
|
|
| Role-based access control implemented |
|
|
| Authorization checked on every request |
|
|
| Direct object references protected |
|
|
| Horizontal privilege escalation prevented |
|
|
| Vertical privilege escalation prevented |
|
|
| API endpoints enforce authorization |
|
|
| Administrative functions protected |
|
|
| Sensitive operations require re-authentication |
|
|
| Item |
Status |
Notes |
| All input validated server-side |
|
|
| Input validated against allowlist where possible |
|
|
| Input length limits enforced |
|
|
| Input type validation (numbers, dates, etc.) |
|
|
| File uploads validated (type, size, content) |
|
|
| File uploads stored outside web root |
|
|
| URL parameters validated |
|
|
| JSON/XML input validated against schema |
|
|
Output Encoding
| Item |
Status |
Notes |
| HTML output encoded to prevent XSS |
|
|
| JavaScript output encoded appropriately |
|
|
| URL output encoded |
|
|
| CSS output encoded |
|
|
| Content-Type headers set correctly |
|
|
| X-Content-Type-Options: nosniff header set |
|
|
3. SQL/NoSQL Injection Prevention
| Item |
Status |
Notes |
| Parameterized queries used for all database access |
|
|
| ORM used with safe query patterns |
|
|
| Dynamic SQL avoided or carefully reviewed |
|
|
| Database user has minimal required permissions |
|
|
| Database errors not exposed to users |
|
|
| NoSQL injection patterns reviewed |
|
|
| LDAP injection prevented |
|
|
| Command injection prevented |
|
|
4. Cryptography & Data Protection
Encryption
| Item |
Status |
Notes |
| TLS 1.2+ enforced for all connections |
|
|
| Strong cipher suites configured |
|
|
| Certificate valid and properly configured |
|
|
| HSTS header enabled |
|
|
| Sensitive data encrypted at rest |
|
|
| Encryption keys stored securely (HSM, KMS) |
|
|
| Key rotation process defined |
|
|
| No deprecated algorithms (MD5, SHA1, DES, RC4) |
|
|
Sensitive Data Handling
| Item |
Status |
Notes |
| Sensitive data identified and classified |
|
|
| PII minimized (collect only what’s needed) |
|
|
| Sensitive data not logged |
|
|
| Sensitive data not in URLs |
|
|
| Sensitive data masked in displays |
|
|
| Cache-Control headers prevent caching of sensitive data |
|
|
| Data retention policies implemented |
|
|
| Secure deletion processes defined |
|
|
5. API Security
| Item |
Status |
Notes |
| API authentication required |
|
|
| API rate limiting implemented |
|
|
| API versioning strategy in place |
|
|
| Unnecessary API methods disabled |
|
|
| API responses don’t leak sensitive data |
|
|
| CORS configured restrictively |
|
|
| API documentation doesn’t expose security details |
|
|
| GraphQL: Query depth limiting |
|
|
| GraphQL: Introspection disabled in production |
|
|
6. Error Handling & Logging
Error Handling
| Item |
Status |
Notes |
| Custom error pages configured |
|
|
| Stack traces not exposed to users |
|
|
| Detailed errors logged server-side only |
|
|
| Error messages don’t reveal system information |
|
|
| Failed operations fail securely (default deny) |
|
|
Security Logging
| Item |
Status |
Notes |
| Authentication events logged |
|
|
| Authorization failures logged |
|
|
| Input validation failures logged |
|
|
| Application errors logged |
|
|
| Admin activities logged |
|
|
| Log integrity protected |
|
|
| Logs centralized for analysis |
|
|
| Log retention meets requirements |
|
|
| Sensitive data excluded from logs |
|
|
| Header |
Expected Value |
Status |
Notes |
| Content-Security-Policy |
Restrictive policy |
|
|
| X-Content-Type-Options |
nosniff |
|
|
| X-Frame-Options |
DENY or SAMEORIGIN |
|
|
| Strict-Transport-Security |
max-age=31536000; includeSubDomains |
|
|
| X-XSS-Protection |
0 (rely on CSP) |
|
|
| Referrer-Policy |
strict-origin-when-cross-origin |
|
|
| Permissions-Policy |
Restrictive policy |
|
|
8. Infrastructure Security
Network
| Item |
Status |
Notes |
| Firewall rules follow least privilege |
|
|
| Unnecessary ports closed |
|
|
| Network segmentation implemented |
|
|
| Internal services not exposed publicly |
|
|
| WAF deployed and configured |
|
|
| DDoS protection in place |
|
|
Server/Container
| Item |
Status |
Notes |
| OS and software patched |
|
|
| Unnecessary services disabled |
|
|
| Default credentials changed |
|
|
| File permissions restrictive |
|
|
| Container images scanned for vulnerabilities |
|
|
| Container runs as non-root |
|
|
| Secrets not baked into images |
|
|
Cloud
| Item |
Status |
Notes |
| IAM roles follow least privilege |
|
|
| MFA enforced for console access |
|
|
| Cloud resources not publicly accessible unless required |
|
|
| Storage buckets/blobs access controls reviewed |
|
|
| Cloud security services enabled (GuardDuty, Security Center) |
|
|
| Resource tagging for security compliance |
|
|
9. Secrets Management
| Item |
Status |
Notes |
| Secrets not in source code |
|
|
| Secrets not in environment variables (use secret manager) |
|
|
| Secret management solution in place (Vault, AWS Secrets Manager) |
|
|
| Secrets rotated regularly |
|
|
| Access to secrets audited |
|
|
| Development secrets separate from production |
|
|
| API keys scoped to minimum permissions |
|
|
10. Dependency Security
| Item |
Status |
Notes |
| Dependencies scanned for vulnerabilities |
|
|
| Automated scanning in CI/CD pipeline |
|
|
| Process for addressing critical vulnerabilities |
|
|
| Dependency versions pinned |
|
|
| Unnecessary dependencies removed |
|
|
| License compliance reviewed |
|
|
| Private package registry used where appropriate |
|
|
11. Business Logic Security
| Item |
Status |
Notes |
| Business rules enforced server-side |
|
|
| Race conditions prevented |
|
|
| Workflow steps cannot be skipped |
|
|
| Price/quantity manipulation prevented |
|
|
| Time-based attacks considered |
|
|
| Abuse scenarios documented and mitigated |
|
|
12. Third-Party Integrations
| Item |
Status |
Notes |
| Third-party security posture assessed |
|
|
| Data shared with third parties minimized |
|
|
| Third-party access scoped appropriately |
|
|
| Webhooks validated |
|
|
| Third-party JavaScript reviewed |
|
|
| Subresource Integrity (SRI) used for CDN resources |
|
|
Assessment Summary
| Category |
✅ |
⚠️ |
❌ |
N/A |
| Authentication & Access Control |
|
|
|
|
| Input Validation & Output Encoding |
|
|
|
|
| Injection Prevention |
|
|
|
|
| Cryptography & Data Protection |
|
|
|
|
| API Security |
|
|
|
|
| Error Handling & Logging |
|
|
|
|
| Security Headers |
|
|
|
|
| Infrastructure Security |
|
|
|
|
| Secrets Management |
|
|
|
|
| Dependency Security |
|
|
|
|
| Business Logic Security |
|
|
|
|
| Third-Party Integrations |
|
|
|
|
Critical Findings
| Finding |
Severity |
Remediation |
|
|
|
|
|
|
|
|
|
Recommendations
Assessed by: ____________________
Date: ____________________
Next review: ____________________
For comprehensive security assessment, contact our team.