Fondamentaux
HTTP et HTTPS
HTTP est le protocole utilisé pour échanger des données entre un navigateur et un serveur web. HTTPS ajoute TLS pour chiffrer et authentifier la communication.
Requête et réponse
Navigateur
│
Requête HTTP
│
Serveur web
│
Réponse HTTP
│
Navigateur
Exemple de requête :
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Une requête contient une méthode, une ressource, des en-têtes et parfois un corps.
Exemple de réponse :
HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: session=abc; HttpOnly; Secure; SameSite=Lax
Une réponse contient un code d'état, des en-têtes et souvent un corps avec du HTML, du JSON, une image ou un fichier.
Méthodes HTTP
| Méthode | Fonction | À retenir |
|---|---|---|
| GET | Récupérer des données | Ne doit pas modifier l'état |
| POST | Envoyer des données | Souvent utilisé pour créer ou déclencher une action |
| PUT | Remplacer une ressource | Idempotent si bien utilisé |
| PATCH | Modifier partiellement | Utile pour une mise à jour ciblée |
| DELETE | Supprimer une ressource | Action sensible à contrôler |
| HEAD | Obtenir uniquement les en-têtes | Pratique pour tester |
Le choix de la méthode ne suffit pas à sécuriser une action. Le serveur doit vérifier l'authentification, l'autorisation, les entrées et le contexte.
Headers utiles
| Header | Description |
|---|---|
| Host | Nom du serveur |
| User-Agent | Navigateur ou client utilisé |
| Referer | Page d'origine |
| Authorization | Informations d'authentification |
| Cookie | Informations de session |
| Content-Type | Format envoyé ou reçu |
| X-Forwarded-For | Adresse IP d'origine derrière un proxy |
Codes HTTP
| Famille | Signification |
|---|---|
2xx | Succès |
3xx | Redirection |
4xx | Erreur côté client ou accès refusé |
5xx | Erreur côté serveur |
Codes fréquents :
| Code | Signification |
|---|---|
200 | Succès |
301 | Redirection permanente |
302 | Redirection temporaire |
400 | Requête invalide |
401 | Authentification nécessaire |
403 | Accès interdit |
404 | Ressource introuvable |
429 | Trop de requêtes |
500 | Erreur serveur |
HTTP vs HTTPS
HTTP → port 80 → non chiffré
HTTPS → port 443 → chiffré avec TLS
HTTPS protège contre l'interception du trafic et permet d'authentifier le serveur.
Il ne garantit pas que le site est honnête. Un site de phishing peut aussi avoir un certificat valide. HTTPS signifie surtout que la connexion est chiffrée et que le certificat correspond au nom présenté.
Cookies et sessions
Les cookies permettent au serveur de reconnaître un navigateur entre plusieurs requêtes.
Attributs importants :
| Attribut | Rôle |
|---|---|
HttpOnly | Rend le cookie inaccessible au JavaScript |
Secure | Envoie le cookie uniquement en HTTPS |
SameSite | Réduit certains risques CSRF |
Max-Age | Définit une durée de vie |
Un cookie de session volé peut permettre une usurpation de session. C'est pour cela qu'il doit être court, protégé et invalidé correctement à la déconnexion.
Headers de sécurité
| Header | Rôle |
|---|---|
| Strict-Transport-Security | Force HTTPS |
| Content-Security-Policy | Réduit certains risques d'injection |
| X-Frame-Options | Protège contre le clickjacking |
| Set-Cookie | Gère les cookies |
Les cookies sensibles doivent utiliser Secure, HttpOnly et SameSite.
À retenir
HTTP décrit l'échange. HTTPS protège le transport. La sécurité applicative dépend aussi du code, des droits, des sessions, des logs et de la configuration serveur.
