Sécurité Web en 2026
La sécurité n'est plus optionnelle. Voici comment protéger vos applications.
OWASP Top 10 - 2026
1. Injection
Code// ❌ Vulnérable
const query = `SELECT * FROM users WHERE id = ${userId}`;
// ✅ Sécurisé - Prepared statements
const result = await db.execute({
sql: 'SELECT * FROM users WHERE id = ?',
args: [userId]
});
2. Broken Authentication
Code// Utilisez des librairies éprouvées
import { hash, verify } from '@node-rs/argon2';
const hashedPassword = await hash(password, {
memoryCost: 65536,
timeCost: 3,
parallelism: 4
});
Headers de Sécurité
Code// next.config.js
const securityHeaders = [
{
key: 'Content-Security-Policy',
value: "default-src 'self'; script-src 'self' 'unsafe-inline'"
},
{
key: 'X-Frame-Options',
value: 'DENY'
},
{
key: 'Strict-Transport-Security',
value: 'max-age=63072000; includeSubDomains; preload'
}
];
JWT Best Practices
Codeimport { SignJWT, jwtVerify } from 'jose';
const token = await new SignJWT({ userId })
.setProtectedHeader({ alg: 'ES256' })
.setExpirationTime('1h')
.setIssuedAt()
.sign(privateKey);
Rate Limiting
Codeimport { Ratelimit } from '@upstash/ratelimit';
const ratelimit = new Ratelimit({
redis,
limiter: Ratelimit.slidingWindow(10, '10 s'),
});
const { success } = await ratelimit.limit(ip);
Checklist Sécurité
- HTTPS obligatoire
- CSP configuré
- Rate limiting actif
- Input validation
- Audit régulier des dépendances
Conclusion
La sécurité est un processus continu, pas une destination.