# Guide des Outils de Tests de Sécurité (Pentest & Scanners)

Ce document répertorie les outils standards de l'industrie pour réaliser des audits de sécurité sur une plateforme web (backend Laravel & frontend React/Next.js) ainsi que la marche à suivre globale pour s'en servir.

---

## 1. Tests Automatisés (SAST & DAST)

Les outils automatisés permettent de scanner le code (SAST) et de scanner l'application en cours de fonctionnement (DAST).

### A. Analyseur de Code Statique (SAST)

#### **SonarQube**
- **Utilité** : Analyse le code source (PHP/Laravel et Javascript/React) pour détecter les "Code Smells", les bugs de logique, et les vulnérabilités de sécurité (mots de passe en dur, failles critiques).
- **Lien Officiel** : [https://www.sonarsource.com/products/sonarqube/](https://www.sonarsource.com/products/sonarqube/)
- **Comment l'utiliser** :
  1. Installer SonarQube en local (via Docker est le plus simple) ou utiliser SonarCloud.
  2. Installer le "SonarScanner" sur votre machine.
  3. Lancer la commande `sonar-scanner` à la racine de votre projet (frontend ou backend).
  4. Visualiser le tableau de bord web généré qui vous indiquera exactement quel fichier et quelle ligne de code posent problème.

#### **Snyk**
- **Utilité** : Snyk excelle pour scanner vos fichiers `composer.json` (Laravel) et `package.json` (Node/React) afin de repérer les dépendances/packages qui contiennent des failles connues.
- **Lien Officiel** : [https://snyk.io/](https://snyk.io/)
- **Comment l'utiliser** :
  1. Créez un compte gratuit Snyk.
  2. Vous pouvez le lier directement à votre dépôt GitHub : Snyk scannera automatiquement chaque "Pull Request" et bloquera le code s'il contient des vulnérabilités.
  3. Vous pouvez aussi installer la CLI (`npm install -g snyk`) puis lancer `snyk test` dans votre projet.

### B. Analyseur de Trafic Dynamique (DAST)

#### **OWASP ZAP (Zed Attack Proxy)** - *Gratuit & Open-Source*
- **Utilité** : Lance des milliers de requêtes vers votre serveur (staging ou pré-production, **JAMAIS en production réelle** car cela crée des données polluantes) pour essayer toutes les attaques de base (XSS, Injections SQL).
- **Lien Officiel** : [https://www.zaproxy.org/](https://www.zaproxy.org/)
- **Comment l'utiliser** :
  1. Télécharger et ouvrir le logiciel OWASP ZAP (nécessite Java).
  2. Cliquez sur **"Automated Scan"**.
  3. Rentrez l'URL de test (ex: `https://staging.mayimavastore.com` ou l'URL de votre API de test).
  4. Laissez le logiciel "attaquer" le site ; il va crawler les URL puis générer un rapport PDF listant les drapeaux Rouges, Oranges et Jaunes.

---

## 2. Le Pentest Manuel (Test d'intrusion)

Pour aller au-delà des robots et tester la **logique métier** (ex: un utilisateur essaye de valider une commande qui n'est pas à lui), il faut utiliser des proxy d'interception.

#### **Burp Suite (Community Edition)** - *La référence absolue des hackers*
- **Utilité** : Intercepte les requêtes entre le navigateur (votre front-end React) et votre serveur (votre API Laravel) pour que vous puissiez modifier les paramètres "à la volée" avant que l'API ne les reçoive.
- **Lien Officiel** : [https://portswigger.net/burp/communitydownload](https://portswigger.net/burp/communitydownload)
- **Comment l'utiliser** :
  1. Lancez Burp Suite et ouvrez le navigateur intégré au logiciel via l'onglet "Proxy" > "Open Browser".
  2. Naviguez sur votre site normal. Burp Suite va se mettre en pause sur chaque bouton que vous cliquez.
  3. Par exemple, si vous validez une commande `POST /api/orders/confirm` avec `{"order_id": 5}`, Burp met le réseau en pause. Vous changez "5" en "10", puis vous laissez la requête partir.
  4. L'objectif est de voir si le backend Laravel bloque la requête (grâce à vos Policies et middlewares) ou s'il se laisse piéger.

#### **Postman (Test de manipulation d'API)**
- **Utilité** : Tester la robustesse de l'API sans passer par le frontend.
- **Lien Officiel** : [https://www.postman.com/](https://www.postman.com/)
- **Comment l'utiliser** : 
  - Simulez le profil d'un acheteur, générez un Token JWT.
  - Essayez d'appeler les routes d'administration (`/api/v1/admin/...`) en passant ce token dans les headers. C'est l'équivalent de nos tests manuels transformés en routine.

---

## 3. Le Bug Bounty (Optionnel / Plateformes)

Si vous voulez qu'une armée de hackers indépendants (certifiés) cherche des failles sur votre système (et vous ne les payez que s'ils trouvent).

- **HackerOne** : [https://www.hackerone.com/](https://www.hackerone.com/)
- **YesWeHack** (Plateforme d'origine européenne/française) : [https://www.yeswehack.com/fr/](https://www.yeswehack.com/fr/)
- **Comment faire** : Vous ouvrez un programme (privé ou public), vous donnez la portée ("URL de mon API et URL de mon Frontend"), et vous fixez les primes (par exemple, 500€ pour une faille critique de paiement).

---

## Conclusion et méthodologie de test

Pour bien sécuriser la plateforme MayiMava, l'ordre d'action idéal est :
1. **Tests locaux Laravel (`php artisan test`)** : Ce pont a été validé à 100% lors de nos dernières sessions ! Vous êtes protégé des régressions évidentes.
2. **Scanner son code** avec `Snyk` et `SonarQube` pour éviter le vieux code non-sécurisé.
3. Déployer sur un **environnement de STAGING (Dev)** isolé.
4. Lancer l'attaque automatisée **OWASP ZAP** dessus pour détecter les vulnérabilités flagrantes (XSS/SQLi).
5. Demander à un testeur humain de faire un passage avec **Burp Suite Community** pour essayer de casser la logique d'autorisation (usurper un profil vendeur, changer les montants, etc.).
