Skip to content

mouna23/API-attack-detection-with-AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Détection des attaques SQL/XSS sur API Web avec intelligence artificielle / machine learning

Ce projet vise à détecter les injections SQL et XSS dans des requêtes/params d'API en utilisant du machine learning.

Présentation du projet

Ce projet vise à détecter les injections SQL et XSS dans des requêtes et paramètres d'API en utilisant des techniques de Machine Learning.
L'objectif est de créer un pipeline simple permettant de :

  • préparer et nettoyer un dataset de requêtes d'API,
  • entraîner un modèle capable de classer automatiquement les requêtes comme benign, sql_injection ou xss,
  • fournir un modèle réutilisable pour des tests ou une future API de détection en temps réel.

Workflow du projet

  1. Préparer le dataset
    Le fichier generated_payloads.csv dans le dossier data/ contient des exemples de requêtes d'API étiquetées (sql_injection, xss, benign) provenant de sources externes comme Kaggle ou générées localement.

  2. Nettoyage et découpage du dataset

    python scripts/clean_and_split.py
    

Le script :

  • supprime les doublons et les lignes vides,

  • nettoie les textes (espaces, retours à la ligne, tabulations),

  • normalise les labels,

et il génère :

  • data/combined.csv : dataset complet nettoyé,

  • data/train.csv : données d'entraînement (80%),

  • data/test.csv : données de test (20%).

  1. Entraînement du modèle
    python scripts/train_model.py
    
    

Le modèle utilise un pipeline ML :

TF-IDF Vectorizer (TfidfVectorizer) : transforme les requêtes texte en vecteurs numériques, en capturant l’importance des mots ou symboles suspects.

Logistic Regression (LogisticRegression) : classifieur supervisé qui apprend à associer les vecteurs TF-IDF aux classes sql_injection, xss ou benign.

Après l’entraînement, le modèle est sauvegardé dans le dossier models, il peut ensuite être utilisé pour prédire la classe d’une nouvelle requête.

  1. Tests automatiques
    pytest -v -s tests/test_pipeline.py
    

Le test vérifie que :

  • le modèle est chargeable,

  • il prédit correctement plusieurs exemples simples,

  • aucune erreur de pipeline ne survient.

  1. Dépendances Python
    pip3 install -r requirements.txt
    

Librairies

  • pandas

  • scikit-learn

  • joblib

  • pytest

  1. Notes
    Les scripts sont conçus pour être exécutés localement, dans un environnement Python 3.13+ avec les dépendances listées.