Proteger les applications et infrastructures contre les cybermenaces, maitriser OWASP, les audits de securite, le pentesting et les bonnes pratiques DevSecOps.
Le métier de la cybersécurité
Le Cybersécurité Engineer (ou Security Engineer) est le professionnel chargé de protéger les applications, les infrastructures et les données contre les cybermenaces croissantes. En 2026, avec la multiplication des attaques (ransomware, supply chain attacks, exploits zero-day), ce profil est devenu stratégique pour toute organisation.
Ses missions varient selon la spécialisation :
- Application Security Engineer — sécuriser les applications dès la conception (Secure by Design)
- Penetration Tester — tester activement les systèmes pour trouver les vulnérabilités
- SOC Analyst — surveiller et répondre aux incidents de sécurité en temps réel
- DevSecOps Engineer — intégrer la sécurité dans les pipelines CI/CD
- Cloud Security Engineer — sécuriser les environnements AWS, Azure, GCP
OWASP Top 10 — les vulnérabilités essentielles
L'OWASP (Open Web Application Security Project) publie le Top 10 des vulnérabilités web les plus critiques. Tout Security Engineer doit les connaître par cœur.
A01 - Broken Access Control
La plus courante en 2026. Un utilisateur peut accéder à des ressources auxquelles il ne devrait pas avoir accès.
// Vulnérabilité : IDOR (Insecure Direct Object Reference)
// L'utilisateur modifie l'ID dans l'URL pour accéder aux données d'un autre
// GET /api/orders/12345 -- l'utilisateur change 12345 en 12346
// Code vulnérable (Node.js/Express)
app.get('/api/orders/:id', async (req, res) => {
const order = await Order.findById(req.params.id); // Aucune vérification !
res.json(order);
});
// Code corrigé — toujours vérifier l'ownership
app.get('/api/orders/:id', authenticate, async (req, res) => {
const order = await Order.findOne({
_id: req.params.id,
userId: req.user.id // L'utilisateur ne peut voir que ses propres commandes
});
if (!order) return res.status(404).json({ error: 'Commande non trouvée' });
res.json(order);
});
A02 - Cryptographic Failures
Données sensibles mal protégées : mots de passe en clair, chiffrement faible, clés exposées.
// Mauvaise pratique : stocker les mots de passe en MD5
const hash = crypto.createHash('md5').update(password).digest('hex'); // INTERDIT
// Bonne pratique : bcrypt avec salt factor adapté
const bcrypt = require('bcrypt');
// Hachage (lors de la création du compte)
const SALT_ROUNDS = 12;
const hashedPassword = await bcrypt.hash(plainPassword, SALT_ROUNDS);
// Vérification (lors de la connexion)
const isValid = await bcrypt.compare(inputPassword, hashedPassword);
// Pour les tokens API : utiliser des secrets forts et les stocker dans des variables d'env
// .env
// API_SECRET=k9mP2rXqN7vL4wS8yH3jB6nC1dF5tG0uA
// Ne JAMAIS committer ce fichier dans Git
A03 - Injection (SQL, Command, LDAP)
L'injection SQL reste une vulnérabilité critique malgré des décennies de sensibilisation.
// Vulnérable : concaténation directe dans la requête SQL
const query = `SELECT * FROM users WHERE email = '${userInput}'`;
// Attaque : email = "' OR '1'='1" -- toute la table est retournée
// Correct : requêtes paramétrées (prepared statements)
const query = 'SELECT * FROM users WHERE email = $1';
const result = await db.query(query, [userInput]);
// Avec un ORM comme Prisma — protection automatique
const user = await prisma.user.findUnique({
where: { email: userInput } // Prisma échappe automatiquement
});
A07 - Identification and Authentication Failures
// Implémenter une protection contre le brute force
const rateLimit = require('express-rate-limit');
const loginLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5, // Max 5 tentatives par IP
message: { error: 'Trop de tentatives. Réessayez dans 15 minutes.' },
standardHeaders: true,
legacyHeaders: false
});
app.post('/auth/login', loginLimiter, async (req, res) => {
// ... logique de connexion
});
// Implémenter le MFA (Multi-Factor Authentication)
// Toujours utiliser HTTPS (TLS 1.2+)
// Tokens JWT avec expiration courte (15min access, 7j refresh)
// Invalider les sessions lors de la déconnexion
Pentesting et outils offensifs
Le pentesting (test d'intrusion) consiste à attaquer de manière contrôlée un système pour identifier ses vulnérabilités avant les véritables attaquants.
Méthodologie PTES (Penetration Testing Execution Standard) :
- Reconnaissance — collecte d'informations sur la cible (OSINT, DNS, sous-domaines)
- Scanning — identification des ports ouverts et services exposés
- Enumération — identification précise des versions et configurations
- Exploitation — exploitation des vulnérabilités identifiées
- Post-exploitation — élévation de privilèges, persistance, pivoting
- Rapport — documentation des findings avec niveaux de criticité CVSS
Outils essentiels du pentesteur :
- Burp Suite — proxy d'interception HTTP/HTTPS, spider, scanner de vulnérabilités web
- Nmap — scanner réseau de référence (ports, services, OS detection)
- Metasploit Framework — framework d'exploitation de vulnérabilités
- OWASP ZAP — scanner de sécurité web open source
- Wireshark — analyse de trafic réseau (captures pcap)
- Nikto — scanner de vulnérabilités web (en-têtes, fichiers sensibles)
- SQLmap — détection et exploitation automatique des injections SQL
- Hashcat / John the Ripper — cracking de hachages de mots de passe
# Exemple de reconnaissance avec Nmap
# Scan des ports TCP les plus courants avec détection de version
nmap -sV -sC -p 80,443,8080,8443,22,21,3306,5432 target.com
# Scan complet discret (SYN scan, timing T2)
nmap -sS -T2 -p- target.com -oN scan_results.txt
# Détection de vulnérabilités avec les scripts NSE
nmap --script vuln target.com
# Avec OWASP ZAP en ligne de commande (CI/CD)
docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://staging.myapp.com \
-r zap_report.html
DevSecOps — sécuriser le pipeline CI/CD
Le DevSecOps intègre la sécurité dans chaque étape du pipeline CI/CD, rendant les vérifications automatiques et continues plutôt que ponctuelles.
Outils de sécurité à intégrer dans le pipeline :
- SAST (Static Analysis) — analyse du code source sans exécution : SonarQube, Semgrep, Bandit (Python)
- DAST (Dynamic Analysis) — test de l'app en cours d'exécution : OWASP ZAP, Nuclei
- SCA (Software Composition Analysis) — audit des dépendances : Snyk, OWASP Dependency-Check
- Secrets scanning — détection de clés et tokens committés : GitGuardian, truffleHog
- Container scanning — audit des images Docker : Trivy, Grype
- IaC scanning — audit des fichiers Terraform/K8s : Checkov, tfsec
# .github/workflows/security.yml — Pipeline CI/CD sécurisé
name: Security Pipeline
on: [push, pull_request]
jobs:
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Semgrep SAST
uses: returntocorp/semgrep-action@v1
with:
config: p/owasp-top-ten
dependency-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Snyk Dependency Audit
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
container-scan:
runs-on: ubuntu-latest
steps:
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Run Trivy container scan
uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:${{ github.sha }}
severity: HIGH,CRITICAL
exit-code: 1
Certifications et salaire
Certifications reconnues en cybersécurité :
- CEH (Certified Ethical Hacker) — certification entry-level pentesting
- OSCP (Offensive Security Certified Professional) — la référence pentesting, très pratique
- CISSP (Certified Information Systems Security Professional) — management de la sécurité SI
- CompTIA Security+ — fondamentaux de la sécurité, bon point d'entrée
- AWS Security Specialty — sécurité cloud AWS
- eWPT (eLearnSecurity Web Application Penetration Tester) — pentesting web
| Expérience | Salaire brut annuel (France) | Salaire brut annuel (Paris) |
|---|---|---|
| Analyste SOC Junior (0–2 ans) | 32 000 – 45 000 € | 38 000 – 52 000 € |
| Security Engineer (3–5 ans) | 50 000 – 70 000 € | 58 000 – 82 000 € |
| Senior Security Engineer (6+ ans) | 72 000 – 100 000 € | 80 000 – 115 000 € |
| CISO / Principal / Freelance | 100 000 – 150 000 € | 700 – 1 100 €/jour TJM |
- La pénurie de profils est encore plus marquée qu'en développement classique
- L'OSCP reste la certification la plus respectée par les employeurs et clients
- Le secteur défense, banque et assurance offre les meilleurs packages
- Le freelance en pentest est très rémunérateur dès 4–5 ans d'expérience