Comment sécuriser votre site web : le guide complet pour les entreprises en 2026
Introduction
En 2025, les cyberattaques ont augmenté de 38% par rapport à l'année précédente, selon le rapport annuel de l'ANSSI. Les PME sont devenues la cible n°1 : 43% des cyberattaques visent désormais les petites et moyennes entreprises, et 60% d'entre elles ferment dans les 6 mois suivant une attaque majeure.
Votre site web est la porte d'entrée de votre entreprise en ligne. S'il n'est pas sécurisé, vous exposez vos clients, vos données et votre réputation. Ce guide vous donne les mesures concrètes à mettre en place — du basique au avancé.
1. HTTPS et certificat SSL : le minimum vital
Pourquoi c'est indispensable
Depuis 2018, Google Chrome affiche "Non sécurisé" pour les sites en HTTP. En 2026, ne pas avoir HTTPS est un suicide commercial :
- Google pénalise les sites HTTP dans le classement
- Les navigateurs bloquent les formulaires sur les pages non sécurisées
- Les utilisateurs abandonnent immédiatement un site "Non sécurisé"
Comment le mettre en place
`bash
# Avec Let's Encrypt (gratuit)
sudo certbot --nginx -d votre-domaine.com -d www.votre-domaine.com
# Renouvellement automatique
sudo certbot renew --dry-run
`
Checklist HTTPS :
- Certificat SSL/TLS valide et à jour
- Redirection automatique HTTP → HTTPS
- HSTS (HTTP Strict Transport Security) activé
- Pas de contenu mixte (mixed content)
2. En-têtes de sécurité HTTP
Les en-têtes HTTP sont votre première ligne de défense. La plupart des sites n'en configurent aucun.
Les en-têtes essentiels
`typescript
// next.config.js - Configuration Next.js
const securityHeaders = [
{
key: 'X-Content-Type-Options',
value: 'nosniff'
},
{
key: 'X-Frame-Options',
value: 'DENY'
},
{
key: 'X-XSS-Protection',
value: '1; mode=block'
},
{
key: 'Referrer-Policy',
value: 'strict-origin-when-cross-origin'
},
{
key: 'Permissions-Policy',
value: 'camera=(), microphone=(), geolocation=()'
},
{
key: 'Content-Security-Policy',
value: "default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline';"
}
];
`
Vérifier vos en-têtes
Utilisez securityheaders.com pour tester votre site. Visez un score A ou A+.
3. Protection contre les attaques XSS
Le Cross-Site Scripting (XSS) est la vulnérabilité n°1 du web. Un attaquant injecte du code JavaScript malveillant dans votre site, qui s'exécute dans le navigateur de vos visiteurs.
Types d'attaques XSS
- Stored XSS : le code malveillant est stocké en base de données (commentaires, profils)
- Reflected XSS : le code est injecté via l'URL ou un formulaire
- DOM-based XSS : manipulation directe du DOM côté client
Comment se protéger
`typescript
// ❌ Dangereux : injection possible
element.innerHTML = userInput;
// ✅ Sécurisé : le texte est échappé automatiquement
element.textContent = userInput;
// ✅ En React : échappement automatique par défaut
return
{userInput}
;// ⚠️ Attention : dangerouslySetInnerHTML désactive la protection
// Ne l'utilisez JAMAIS avec du contenu utilisateur non sanitisé
return
;`
Règle d'or : ne faites JAMAIS confiance aux données qui viennent de l'utilisateur. Sanitisez, échappez, validez.
4. Protection CSRF (Cross-Site Request Forgery)
Le CSRF force un utilisateur authentifié à exécuter des actions à son insu (changer son mot de passe, effectuer un virement, etc.).
Mise en place
`typescript
// Utiliser des tokens CSRF dans les formulaires
import { generateToken, validateToken } from '@/lib/csrf';
// Côté serveur : générer un token
const csrfToken = generateToken(session.id);
// Côté client : inclure le token
// Côté API : valider le token
if (!validateToken(req.body._csrf, session.id)) {
return res.status(403).json({ error: 'Invalid CSRF token' });
}
`
Attribut SameSite pour les cookies
`typescript
// Configuration de cookies sécurisés
res.setHeader('Set-Cookie', [
'session=abc123; HttpOnly; Secure; SameSite=Strict; Path=/'
]);
`
5. Protection contre les injections SQL
Même si vous utilisez un ORM, les injections SQL restent un risque si vous construisez des requêtes manuellement.
Le problème
`typescript
// ❌ JAMAIS : injection SQL possible
const query = SELECT * FROM users WHERE email = '${email}';
// ✅ Toujours utiliser des requêtes paramétrées
const { data } = await supabase
.from('users')
.select('*')
.eq('email', email);
`
Bonnes pratiques
- Utilisez toujours un ORM (Prisma, Drizzle) ou un query builder (Supabase)
- Validez les entrées côté serveur avec Zod ou Yup
- Limitez les permissions de votre base de données (principe du moindre privilège)
- Ne stockez JAMAIS les mots de passe en clair — utilisez bcrypt ou argon2
6. Authentification et gestion des sessions
Mots de passe
`typescript
// Hachage sécurisé avec bcrypt
import bcrypt from 'bcrypt';
const SALT_ROUNDS = 12;
const hashedPassword = await bcrypt.hash(password, SALT_ROUNDS);
const isValid = await bcrypt.compare(inputPassword, hashedPassword);
`
Gestion des sessions
- Tokens JWT avec expiration courte (15-30 min) + refresh tokens
- Sessions côté serveur avec Redis pour les applications sensibles
- Invalidation de session côté serveur après déconnexion
- Rate limiting sur les endpoints d'authentification
7. Mises à jour et dépendances
Les dépendances obsolètes sont un vecteur d'attaque majeur. 78% des applications utilisent au moins une dépendance avec une vulnérabilité connue.
`bash
# Auditer vos dépendances
npm audit
# Mettre à jour les patchs de sécurité
npm audit fix
# Outils automatisés
# Activez Dependabot ou Renovate sur GitHub
`
8. Sauvegardes et plan de reprise
La meilleure sécurité ne vous protège pas à 100%. Vous devez avoir :
- Sauvegardes automatiques quotidiennes de la base de données
- Sauvegardes off-site (pas uniquement chez le même hébergeur)
- Plan de reprise d'activité (PRA) testé régulièrement
- Monitoring en temps réel (uptime, erreurs, tentatives de connexion suspectes)
Checklist sécurité complète
- HTTPS avec certificat SSL valide
- En-têtes de sécurité configurés (CSP, HSTS, X-Frame-Options)
- Protection XSS dans tout le code
- Tokens CSRF sur les formulaires
- Requêtes SQL paramétrées uniquement
- Mots de passe hachés avec bcrypt/argon2
- Rate limiting sur les endpoints sensibles
- Dépendances à jour et auditées
- Sauvegardes automatiques testées
- Monitoring et alertes en place
Conclusion
La sécurité n'est pas un luxe, c'est une obligation. Chaque mesure de ce guide réduit considérablement votre surface d'attaque. Commencez par les bases (HTTPS, en-têtes, mises à jour), puis renforcez progressivement.
Un site sécurisé inspire confiance, protège vos clients et vous évite des conséquences juridiques potentiellement dévastatrices.
Vous voulez un audit de sécurité de votre site ? Contactez-moi et je vous envoie un rapport complet sous 48h.
Disponibilités cette semaine
Vous avez un projet ? Parlons-en.
Réservez un appel gratuit et sans engagement pour discuter de vos objectifs.