La sécurité des API est la discipline qui protège les interfaces machine-to-machine d'une application (REST, GraphQL, gRPC, SOAP, WebSocket) contre les abus, les compromissions et les vols de données. Elle se distingue de la sécurité web traditionnelle par trois caractéristiques structurelles : surface d'attaque plus large mais moins visible (50 à 500 endpoints par application contre 5 à 15 pages web), classes de vulnérabilités spécifiques dominées par les défauts d'autorisation (Broken Object Level Authorization API1:2023, Broken Function Level Authorization API5:2023, Broken Object Property Level Authorization API3:2023), et inefficacité des outils web classiques (DAST, scanners) sans contrat OpenAPI ou GraphQL schema. Le référentiel pivot en 2026 est l'OWASP API Security Top 10 2023, mis à jour par Inon Shkedy et Erez Yalon, qui formalise les 10 classes de risques applicables à toute API moderne. Cet article détaille la définition rigoureuse, le périmètre couvert (REST, GraphQL, gRPC, SOAP), pourquoi la sécurité API mérite une approche distincte de la sécurité web, le référentiel OWASP API Top 10 2023 complet, les 4 couches de défense (authentification, autorisation, validation, monitoring), l'architecture API gateway moderne, les outils 2026 et les incidents historiques majeurs qui ont structuré la discipline.
Définition et périmètre
La sécurité des API couvre la protection de toutes les interfaces machine-to-machine d'une application, indépendamment du protocole sous-jacent.
Types d'API à sécuriser
| Type | Caractéristiques | Cas d'usage typique |
|---|---|---|
| REST | HTTP/JSON, ressources, verbes (GET/POST/PUT/PATCH/DELETE) | API web, mobile backend, intégrations tierces |
| GraphQL | HTTP/JSON, requêtes typées, schema unique | Frontends complexes, applications data-intensive |
| gRPC | HTTP/2 + Protocol Buffers, RPC typé | Microservices internes haute performance |
| SOAP | XML, WSDL, SOAP envelopes | Legacy enterprise, banking, ERP |
| WebSocket | Connexion bidirectionnelle persistante | Chat, notifications temps réel, trading |
| Webhooks | HTTP callbacks asynchrones | Intégrations event-driven, partner notifications |
| Server-Sent Events | HTTP streaming serveur vers client | Notifications push, monitoring dashboards |
Chaque type a ses spécificités d'audit et défense, mais les principes fondamentaux (authentification, autorisation, validation, monitoring) restent identiques.
Surface d'attaque API en 2026
Trois caractéristiques font des APIs une surface d'attaque massive :
- Volume d'endpoints : une application moderne expose typiquement 50 à 500 endpoints API contre 5 à 15 pages web visibles. La surface effective dépasse de loin la web frontend.
- Shadow APIs : 30 à 40 % des endpoints en production ne sont pas documentés (oubliés, déployés hors gouvernance, versions précédentes maintenues). Invisible aux outils classiques.
- APIs internes exposées involontairement : APIs internes accidentellement exposées Internet via misconfigurations cloud (S3 buckets, Lambda function URLs, ingress Kubernetes mal configurés).
Pourquoi une discipline distincte de la sécurité web
Trois différences structurelles imposent une approche dédiée.
1. Surface élargie mais moins visible
Le ratio APIs / pages web est typiquement de 10:1 à 100:1 pour une application moderne. Les outils web classiques (DAST scanners type OWASP ZAP, Burp scanner) crawlent les liens HTML et les formulaires mais manquent les endpoints API non référencés depuis un frontend visible. Un audit complet API nécessite un contrat (OpenAPI, GraphQL schema, Postman collection) ou des outils spécialisés (Akto, Kiterunner, APIClarity).
2. Vulnérabilités d'autorisation dominantes
Sur le web classique, les vulnérabilités historiquement dominantes sont XSS et SQL injection. Sur API, ce sont les contrôles d'autorisation au niveau objet (BOLA), fonction (BFLA) et propriété (BOPLA) qui représentent la majorité des bugs critiques. Selon les pentests API documentés 2024-2026, plus de 60 % des findings critiques tombent dans ces trois catégories.
3. Authentification et session différentes
Le web classique utilise principalement des sessions cookies. Les APIs modernes utilisent presque exclusivement des tokens stateless : JWT signés (RFC 7519), OAuth 2.0 access tokens (RFC 6749), API keys, mTLS. Les patterns de défense diffèrent (validation cryptographique, scopes, expirations courtes, refresh tokens) et les vulnérabilités spécifiques apparaissent (algorithm confusion, key confusion, jti replay, token leak via logs).
OWASP API Security Top 10 2023
Le référentiel pivot en 2026, mis à jour par OWASP en 2023 (Inon Shkedy et Erez Yalon comme contributors clés), version précédente datait de 2019.
| ID | Nom | Description condensée |
|---|---|---|
| API1:2023 | Broken Object Level Authorization (BOLA) | Accès à un objet n'appartenant pas au caller |
| API2:2023 | Broken Authentication | Auth cassée ou contournable |
| API3:2023 | Broken Object Property Level Authorization (BOPLA) | Mass assignment + excessive data exposure |
| API4:2023 | Unrestricted Resource Consumption | Pas de rate limit, DoS applicatif possible |
| API5:2023 | Broken Function Level Authorization (BFLA) | Fonction admin accessible à utilisateur standard |
| API6:2023 | Unrestricted Access to Sensitive Business Flows | Abus de business logic (achats massifs, scraping) |
| API7:2023 | Server Side Request Forgery (SSRF) | API consomme une URL utilisateur sans validation |
| API8:2023 | Security Misconfiguration | Headers, CORS, errors verbose, défauts par défaut |
| API9:2023 | Improper Inventory Management | Versions oubliées, environnements staging exposés |
| API10:2023 | Unsafe Consumption of APIs | API consume third-party APIs sans validation |
Évolutions clés vs 2019
- API3 BOPLA est nouveau, fusion de mass assignment et excessive data exposure 2019.
- API6 Unrestricted Access to Sensitive Business Flows est nouveau, formalise les abus de business logic (scalping, ticketing, etc.).
- API10 Unsafe Consumption of APIs est nouveau, traite les risques quand l'API consomme d'autres APIs externes.
Couche 1 — Authentification API
Quatre mécanismes dominent en 2026.
OAuth 2.0 + OIDC
Standard de référence pour API consommées par utilisateurs humains via applications.
- Authorization Code Flow + PKCE : pour SPA, mobile apps. Pas de secret côté client.
- Client Credentials Flow : pour machine-to-machine (microservices internes).
- Resource Owner Password Credentials (déprécié) : éviter, OAuth 2.1 le supprime.
- Implicit Flow (déprécié) : éviter, OAuth 2.1 le supprime.
# Exemple : obtention access token via Client Credentials
curl -X POST https://idp.example.test/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=service-a" \
-d "client_secret=<secret>" \
-d "scope=read:orders write:orders"
# Réponse :
# {
# "access_token": "eyJhbGc...",
# "token_type": "Bearer",
# "expires_in": 3600,
# "scope": "read:orders write:orders"
# }JWT (JSON Web Tokens)
Format de token stateless dominant. RFC 7519. Composé de header (algorithme), payload (claims), signature.
Patterns de défense critiques :
- Toujours vérifier la signature côté serveur. Ne jamais faire confiance au header
algenvoyé par le client. - Whitelister les algorithmes acceptés côté validation (par exemple
RS256ouEdDSAuniquement). Bloquernone,HS256si serveur attendRS256. - Vérifier les claims standard :
exp(expiration),iss(issuer),aud(audience),nbf(not before). - Expiration courte : access tokens 5 à 60 minutes max, refresh tokens 24h à 7 jours selon sensibilité.
- Stocker les secrets de signature côté serveur uniquement, jamais dans le client.
mTLS (Mutual TLS)
Authentification cryptographique via certificats X.509 côté client ET serveur. Plus forte que JWT/OAuth car liée au transport.
Cas d'usage 2026 : microservices internes (service mesh Istio, Linkerd avec auto-mTLS), partner B2B API (FAPI 2.0 banking), IoT devices.
API Keys
Clé statique partagée. Le moins sécurisé mais le plus simple. Acceptable pour :
- APIs internes faible criticité avec rotation régulière.
- Tier gratuit / démo APIs publiques.
- Identification de partenaires (sans authentification utilisateur).
À éviter pour : authentification utilisateur (préférer OAuth), accès données sensibles (préférer JWT scoped), production critique (préférer mTLS).
Couche 2 — Autorisation API
Le pilier le plus critique en 2026. Trois classes de défauts dominent les incidents.
BOLA (API1:2023) : Broken Object Level Authorization
Cas le plus fréquent. L'utilisateur authentifié accède à un objet via son ID sans vérification que l'objet lui appartient.
# Vulnérable : pas de check d'autorité
GET /api/orders/12345
Authorization: Bearer eyJhbGc...
# Le serveur retourne l'order 12345 même si elle appartient à un autre userDéfense :
# Pattern correct : check d'autorité explicite
@app.get("/api/orders/{order_id}")
def get_order(order_id: int, current_user: User = Depends(auth)):
order = db.query(Order).filter(Order.id == order_id).first()
if not order:
raise HTTPException(404)
if order.owner_id != current_user.id and current_user.role != "admin":
raise HTTPException(403) # ne pas révéler 404 pour éviter enumeration
return orderValidation systématique requise sur chaque endpoint manipulant un objet identifié.
BFLA (API5:2023) : Broken Function Level Authorization
Un utilisateur standard appelle une fonction admin sans vérification du rôle.
# Vulnérable : fonction admin sans check de rôle
DELETE /api/admin/users/42
Authorization: Bearer <token utilisateur standard>Défense : vérification de rôle ou permission systématique sur les endpoints sensibles, idéalement via middleware ou décorateur centralisé.
@app.delete("/api/admin/users/{user_id}")
@require_role(["admin", "super_admin"])
def delete_user(user_id: int, current_user: User = Depends(auth)):
# ...BOPLA (API3:2023) : Broken Object Property Level Authorization
Deux variantes :
Mass assignment : l'utilisateur envoie des champs non documentés mais traités côté serveur.
# Création d'un user standard, mais avec champ role injecté
POST /api/users
{
"email": "user@example.test",
"password": "...",
"role": "admin" # ← non documenté, traité ?
}Défense : whitelist explicite des champs acceptés en input.
class UserCreateRequest(BaseModel):
email: str
password: str
# role non listé = ignoré par Pydantic
class Config:
extra = "ignore" # ou "forbid" pour rejeter explicitementExcessive data exposure : la réponse retourne plus de champs que nécessaire.
# Vulnérable : retourne le user complet
@app.get("/api/users/me")
def get_me(user: User = Depends(auth)):
return user # contient password_hash, ssn, internal_notes...
# Correct : DTO de sortie restreint
class UserPublicResponse(BaseModel):
id: int
email: str
display_name: str
# password_hash, ssn, etc. NON inclus
@app.get("/api/users/me")
def get_me(user: User = Depends(auth)) -> UserPublicResponse:
return UserPublicResponse.from_orm(user)Couche 3 — Validation et resource consumption
Validation de schema
Toute requête doit être validée contre un schéma strict avant traitement métier.
// Node.js avec Zod
import { z } from "zod";
const CreateOrderSchema = z.object({
productId: z.string().uuid(),
quantity: z.number().int().positive().max(1000),
shippingAddress: z.object({
line1: z.string().min(1).max(200),
city: z.string().min(1).max(100),
postalCode: z.string().regex(/^[0-9]{5}$/),
country: z.string().length(2),
}),
promoCode: z.string().regex(/^[A-Z0-9]{6,12}$/).optional(),
});
app.post("/api/orders", (req, res) => {
const parsed = CreateOrderSchema.safeParse(req.body);
if (!parsed.success) {
return res.status(400).json({ errors: parsed.error.errors });
}
// ... process parsed.data
});Rate limiting (API4:2023)
Trois couches cumulatives.
| Couche | Outil typique | Limite type |
|---|---|---|
| Reverse proxy / API gateway | Nginx, Kong, AWS API Gateway | 100 req/sec par IP, 10 MB body max |
| Application rate limiting | Redis + token bucket | 1000 req/min par utilisateur |
| Business logic throttling | Code applicatif | 10 transactions de paiement par jour par compte |
Anti-DoS algorithmique
Les requêtes peu nombreuses mais coûteuses peuvent saturer le serveur :
- GraphQL queries imbriquées profondes : limiter via
max-depth(pattern : 7-10 max). - GraphQL aliases pour bypass rate limit : limiter le nombre d'aliases par requête.
- Regex catastrophic backtracking : audit des regex utilisateur via Re-DoS analyzers.
- Décompression bombs : limiter taille décompressée à un multiple de la taille input.
Couche 4 — Monitoring et detection
Logs structurés API
Tous les logs API doivent inclure :
- Timestamp précis (ISO 8601 avec timezone).
- Method + path + statut HTTP.
- User ID authentifié (si applicable).
- IP source.
- User-Agent.
- Latence.
- Trace ID pour corrélation distributed tracing.
- Pas de body en clair si contient données sensibles (mot de passe, tokens, PII).
Détection runtime
Patterns d'anomalies à surveiller :
- Volume anormal : un user fait soudain 1000 req/min vs baseline 10 req/min.
- Géo anormale : compte habituellement utilisé depuis France soudain depuis Russie.
- BOLA enumeration : un user accède séquentiellement à
/api/orders/1, 2, 3, 4...(énumération massive d'objets). - Authentication anomalies : multiples échecs auth depuis IP inhabituelle, success post failure massif (brute force réussi).
Outils 2026 :
| Outil | Type | Particularité |
|---|---|---|
| Akto | Open source + commercial | Discovery + runtime detection, déploiement K8s |
| Salt Security | Commercial | Leader marché, ML pour anomalies |
| Noname Security | Commercial | API security platform mature |
| Wallarm | Commercial | API security + WAAP unified |
| 42Crunch | Commercial | Audit + runtime focus OpenAPI |
| Cequence | Commercial | Bot management + API security |
| APIClarity | Open source CNCF Sandbox | Discovery via eBPF, OpenAPI generation |
API Gateway et architecture moderne
L'API gateway centralise les contrôles transverses.
Fonctions standard d'une API gateway
- Authentication validation (JWT, OAuth introspection, API keys).
- Authorization basique (scopes, roles).
- Rate limiting et throttling.
- WAF rules (OWASP CRS, custom).
- mTLS termination.
- Request/response transformation.
- Caching.
- Observability (metrics, logs, traces).
- Documentation portal (OpenAPI rendering).
Solutions API gateway 2026
| Solution | Type | Particularité |
|---|---|---|
| Kong | Open source + Enterprise | Le plus déployé OSS, plugins riches |
| Tyk | Open source + Enterprise | Très bon UX admin, GraphQL natif |
| Apigee | Google Cloud | Enterprise mature, analytics avancés |
| AWS API Gateway | AWS managed | Intégration AWS native, Lambda authorizer |
| Azure API Management | Azure managed | Intégration Azure, policies XML |
| Gravitee | Open source + Enterprise | Européen, RGPD-friendly |
| KrakenD | Open source | Performance haute, build immutable |
| Traefik Hub | Open source + Enterprise | Léger, K8s-native |
Service Mesh comme alternative pour interne
Pour APIs internes microservices, un service mesh (Istio, Linkerd, Consul Connect, Cilium Service Mesh) couvre :
- mTLS automatique entre services.
- Policy d'autorisation centralisée (AuthorizationPolicy Istio).
- Retry, circuit breaker, load balancing.
- Observability uniforme.
API gateway en frontage public + service mesh pour interne = architecture mature 2026.
Tests et audit
Trois approches complémentaires.
Audit dev-time (shift-left)
- Spectral (Stoplight, open source) : linting OpenAPI specifications.
- 42Crunch Security Audit : scoring de sécurité OpenAPI continu en CI.
- Schemathesis : property-based testing à partir d'OpenAPI ou GraphQL.
- Semgrep : règles custom pour patterns API insecure (mass assignment, BOLA missing).
Audit dynamique runtime
- OWASP ZAP avec OpenAPI import : scan automatisé.
- Burp Suite Pro avec extensions Autorize, Param Miner, JWT Editor.
- Caido Pro : alternative moderne à Burp.
- Akto : tests automatisés à partir du trafic observé.
Pentest API spécialisé
Tous les 12 mois minimum sur APIs publiques critiques. Méthodologie complète détaillée dans l'article dédié methodologie-pentest-api.
Incidents API marquants
Quatre incidents qui structurent la compréhension des risques API en 2026.
T-Mobile janvier 2023
Vulnérabilité d'API : pas de rate limiting sur un endpoint d'énumération combiné à BFLA. Attaquant a pu énumérer 37 millions de comptes clients, exfiltrer noms, dates de naissance, numéros de téléphone, adresses email. Découvert en novembre 2022, divulgué en janvier 2023.
Optus septembre 2022
API d'authentification publique sans contrôle d'accès, accessible sans authentification. Exfiltration de 10 millions de clients (nom, date de naissance, adresse, numéros de passeport, permis). Coût total estimé supérieur à 140 millions AUD.
Twitter (X) janvier 2022
Vulnérabilité dans une API qui permettait d'identifier un compte Twitter à partir d'un email ou numéro de téléphone (BFLA + leak design). 5,4 millions de comptes énumérés et publiés sur forums. Amende FTC subséquente.
Peloton mai 2021
API REST exposait les profils utilisateur sans authentification correcte. Données personnelles de millions d'utilisateurs accessibles. Réparé après disclosure responsable de Pen Test Partners.
Stack pragmatique pour démarrer en 2026
Quatre couches à déployer dans cet ordre pour démarrer un programme API security.
Phase 1 — Inventaire et discovery (mois 1-2)
- Akto open source déployé en mirror traffic ou eBPF pour discovery automatique.
- OpenAPI obligatoire pour toute nouvelle API en CI/CD (refus PR sans spec).
- Inventaire exhaustif des APIs production, classification par sensibilité.
Phase 2 — Couche transverse (mois 2-4)
- API gateway pour toute API publique (Kong, AWS API Gateway, équivalent).
- Rate limiting centralisé sur tous endpoints sensibles.
- JWT validation standard avec algorithm whitelist.
- WAF OWASP CRS ou managed (Cloudflare, AWS WAF, Imperva).
Phase 3 — Audit dev-time (mois 4-6)
- Spectral ou 42Crunch Audit en CI sur les OpenAPI specs.
- Schemathesis pour fuzzing schema-aware en pre-prod.
- Semgrep rules pour patterns BOLA/BFLA dans le code applicatif.
Phase 4 — Monitoring et detection (mois 6-12)
- Logs API gateway + applicatifs centralisés en SIEM.
- Règles de détection (volume anomalies, BOLA enumeration patterns).
- Considérer plateforme runtime detection (Akto Pro, Salt Security, Noname) selon volume APIs.
Points clés à retenir
- La sécurité des API est la discipline qui protège les interfaces machine-to-machine (REST, GraphQL, gRPC, SOAP, WebSocket) avec des risques structurellement distincts de la sécurité web : surface plus large, vulnérabilités d'autorisation dominantes, tokens stateless.
- L'OWASP API Security Top 10 2023 est le référentiel pivot. Les trois risques les plus exploités sont BOLA (API1), BOPLA (API3), BFLA (API5) : tous des défauts d'autorisation représentant plus de 60 % des findings critiques en pentest API.
- Quatre couches de défense cumulatives : authentification (OAuth + OIDC + JWT + mTLS), autorisation (BOLA/BFLA/BOPLA prevention), validation et resource consumption (schema, rate limit), monitoring runtime (logs + détection anomalies).
- API gateway centralise les contrôles transverses (auth, rate limit, WAF, mTLS) mais ne remplace pas les défenses applicatives (BOLA, business logic). Pattern 2026 : API gateway + défenses code + plateforme runtime detection.
- Les incidents historiques (T-Mobile 2023, Optus 2022, Twitter 2022, Peloton 2021) partagent un patron récurrent : classe OWASP API Top 10 standard + volume massif via endpoint unique + absence de rate limiting. Les défenses sont connues, leur application reste lacunaire.
Pour aller plus loin
- Roadmap API Security - parcours d'apprentissage complet pour devenir API Security Engineer.
- Méthodologie de pentest API - audit offensif des interfaces REST et GraphQL.
- Injection SQL : fonctionnement, types et défenses - classe d'injection souvent introduite via APIs mal protégées.
- Scanner de dépendances (SCA) - couverture supply chain des dépendances utilisées par les APIs.





