Authentication & Authorisation
โ Passwords hashed with bcrypt (cost factor โฅ12) or Argon2, never stored in plain text or reversible encryption. โ JWT tokens have expiry set; refresh token rotation implemented. โ Password reset tokens are single-use and expire within 1 hour. โ Rate limiting on all auth endpoints (login, register, password reset). โ Account lockout after N failed attempts with exponential backoff. โ All API endpoints verify authorisation โ not just authentication. โ Role-based access control tested with negative test cases (users cannot access resources they don't own). โ Admin routes protected by IP allowlist or separate auth layer.
Input Validation & Injection
โ All database queries use parameterised statements or ORM โ zero string concatenation in SQL. โ User input sanitised before rendering in HTML (XSS prevention). โ Content-Security-Policy header configured and tested. โ File upload validation: type checking by content (not extension), size limits, storage outside web root. โ XML/JSON parsing libraries protected against XXE attacks. โ Server-Side Request Forgery (SSRF) protection on any endpoint that makes outbound HTTP requests.
Secrets & Configuration
โ No secrets in source code, ever. Verified with git-secrets or similar pre-commit hook. โ All secrets stored in environment variables or secrets manager (AWS Secrets Manager, HashiCorp Vault). โ Production secrets rotated from development secrets โ different database passwords, API keys, JWT secrets. โ .env files in .gitignore and verified absent from git history. โ Third-party API keys have minimum required permissions.
Transport Security
โ HTTPS enforced everywhere; HTTP redirects to HTTPS. โ HSTS header set with includeSubDomains and preload. โ TLS 1.2 minimum; TLS 1.3 preferred. โ Certificates auto-renewed. โ Sensitive data encrypted in transit between internal services (not just external). โ Database connections use TLS.
Infrastructure Hardening
โ Principle of least privilege on all IAM roles and policies. โ Security groups configured to allow only required ports and sources. โ S3 buckets: public access blocked unless explicitly required; bucket policies audited. โ Database not publicly accessible; accessible only from application subnet. โ Logging enabled: CloudTrail, VPC Flow Logs, application logs to immutable storage. โ Unused ports, services, and packages removed from server images.
Dependencies & Supply Chain
โ npm audit / pip audit / bundle audit run; critical and high vulnerabilities resolved. โ Dependency versions pinned (package-lock.json / requirements.txt committed). โ Automated vulnerability scanning in CI pipeline (Dependabot or Snyk). โ Docker base images from official/verified sources, regularly updated. โ Software Bill of Materials (SBOM) generated for regulated industries.
Want a security audit of your product?
Tell us about your project and we'll respond within 24 hours with a clear, honest plan.