Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Final-project-SQL-injection-pipeline — Hybride Machine-Learning-Pipelines zur Erkennung von SQL-Injection im Web-Traffic, die DistilBERT- und BERT-GNN-Modelle mit adversarialem Training und Robustheitsanalyse kombinieren. | Kitploit
Tools/GitHubGitHub/mlily2024/final-project-sql-injection-pipeline
SchwachstellenanalyseWebsicherheitMaschinelles LernenPapers & ForschungLernen & BildungAnomalieerkennung
GitHubmlily2024/final-project-sql-injection-pipeline

Final-project-SQL-injection-pipeline

Hybride Machine-Learning-Pipelines zur Erkennung von SQL-Injection im Web-Traffic, die DistilBERT- und BERT-GNN-Modelle mit adversarialem Training und Robustheitsanalyse kombinieren.

Repository anzeigen
2vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

SQL-Injection-Erkennung — Hybride ML-Pipelines

Quellcode für die MSc-Dissertation: Enhancing Web Application Firewall with Machine Learning for SQL Injection Detection

AutorLilliane Linnet Musoke
InstitutionUniversity of Reading, Fachbereich Informatik
StudiengangMSc Data Science and Advanced Computing
BetreuerProfessor Atta Badii
Eingereicht17. September 2024

Was dieses Repository enthält

Zwei neuartige hybride Machine-Learning-Pipelines, jeweils als eigenständiges Jupyter-Notebook implementiert, zur Erkennung von SQL-Injection-Angriffen (SQLi) im Webanwendungsverkehr:

  1. DistilBERT_Stacked_Ensemble_pipeline.ipynb — eine DistilBERT-Stacked-Ensemble-Pipeline (Meta-Learner). Verwendet DistilBERT-kontextuelle Einbettungen als Eingabe für einen Stack konventioneller ML- und Ensemble-Klassifikatoren (Logistic Regression, XGBoost, SVM), kombiniert unter einem neuronalen Netzwerk-Meta-Learner. Adversariales Training wird mit der Fast Gradient Sign Method (FGSM) durchgeführt; Hyperparameter werden mit Optuna abgestimmt.
  2. BERT_GNN_pipeline_FINAL.ipynb — eine hybride BERT-Graph-Neuronales-Netzwerk-Pipeline. BERT erzeugt kontextuelle Einbettungen von SQL-Abfragen; ein GNN modelliert die graphstrukturierte Abfragedarstellung, um strukturelle Muster zu erfassen. Hyperparameter werden mit Optuna abgestimmt.

Plus der Datensatz, der zum Trainieren und Bewerten beider Pipelines verwendet wurde:

  1. SQL_Injection_Dataset.csv — beschriftete SQL-Abfragen (gutartig vs. bösartig).

Hauptergebnisse (aus der Dissertation)

PipelineGenauigkeitAdversariale Genauigkeit (FGSM)Anmerkungen
DistilBERT-Stacked Ensemble99,81 %99,77 %Ausgewählter empfohlener Ansatz; schnelle Ausführungszeit
BERT-GNN99,48 % (99,67 % Hold-out)—Überlegenes strukturelles Verständnis; längere Ausführungszeit (23,13 s); Hold-out-Validierungs-Neutraining erreicht 99,67 %, siehe RESULTS.md
Beste konventionelle Baseline (Random Forest)94,47 %—In derselben Studie bewertet

Alle vier Leistungsmetriken (Genauigkeit, Präzision, Recall, F1-Score) erreichen für beide Hybrid-Pipelines denselben Spitzenwert. Vollständige Modelltabellen, Konfusionsmatrizen, ROC-Kurven, Lernkurven und Sensitivitätsanalysen finden sich in den Notebooks und in der Dissertation.

Die adversariale Genauigkeit des DistilBERT-Stacked Ensemble von 99,77 % übertrifft das vergleichbare adversariale Testergebnis von Guan et al. (2023, Future Internet 15(4):133, DOI 10.3390/fi15040133) um 2,38 % — siehe Dissertation §4.4 für den vollständigen Vergleich.

So können Sie die Arbeit ansehen

  • Notebooks — die beiden .ipynb-Dateien im Repository-Stammverzeichnis enthalten den vollständigen Pipeline-Code (Datenladen, Vorverarbeitung, Einbettung, Training, Bewertung, adversariale Robustheit, Sensitivitätsanalyse). Die Ausgaben wurden entfernt, damit die Notebooks auf GitHub schnell und klein rendern; das Ausführen eines der Notebooks von oben nach unten erzeugt jede Abbildung neu.
  • Ergebnisgalerie — RESULTS.md zeigt alle Abbildungen (Konfusionsmatrizen, ROC-Kurven, Lernkurven, Sensitivitätsanalyse-Diagramme, Modellvergleich) als betrachtbare Galerie, ohne dass etwas ausgeführt werden muss.
  • Alle Abbildungen — einzelne PNG-Exporte jeder Ergebnisabbildung befinden sich im Ordner results/, benannt nach Pipeline und Abschnitt.

So führen Sie die Notebooks lokal aus

Getestet unter Python 3.10+ mit einer Jupyter-Umgebung. So installieren Sie alle Abhängigkeiten:

root@kitploit:~
python -m venv .venv
source .venv/bin/activate          # macOS / Linux
.venv\Scripts\activate             # Windows
pip install -r requirements.txt

Öffnen Sie dann eines der Notebooks in JupyterLab oder VS Code und führen Sie die Zellen von oben nach unten aus. Jede Pipeline ist durchgängig eigenständig: Datenladen und Vorverarbeitung → Einbettungsextraktion → Modelltraining → Bewertung → Adversarial-Robustheitsprüfung → Sensitivitätsanalyse. Eine GPU wird für den BERT-GNN-Trainingsschritt empfohlen, ist aber für die Inferenz oder das DistilBERT-Stacked Ensemble nicht erforderlich.

Ressourcenanforderung. Der DistilBERT- (und BERT-) Einbettungsextraktionsschritt hält das Sprachmodell und seine vollständigen Datensatzeinbettungen gleichzeitig im Speicher. Die End-to-End-Ausführung benötigt ungefähr 6–8 GB freien Arbeitsspeicher für die DistilBERT-Stacked-Ensemble-Pipeline und 8–12 GB für BERT-GNN. Die Notebooks wurden ursprünglich auf Google Colab entwickelt (das 12–16 GB und eine kostenlose GPU bereitstellt). Wenn Sie lokal auf einem Rechner mit insgesamt 8 GB Arbeitsspeicher arbeiten, schließen Sie zuerst andere Anwendungen oder führen Sie sie in Colab über die Badge-Links oben in jedem Notebook aus.

Reproduktion der Revisionsergebnisse

Die Skripte im Repository-Stammverzeichnis regenerieren die erweiterte Analyse, die im überarbeiteten BERT-GNN-Papier berichtet wird (Ablation, korrigierte Hold-out-Bewertung, strukturbewusster Graph, Verschleierungsrobustheit, die Sieben-Test-Robustheitssuite, vollständige Metriken und modellübergreifende Ausführungszeit). Sie lesen die festgeschriebene SQL_Injection_Dataset.csv, schreiben ihre Ausgaben nach results/ und speichern Zwischenartefakte (BERT-Einbettungen, Graphen, trainierte Modelle) unter .structure_work/ und .corrected_work/ zwischen. Diese Cache-Verzeichnisse werden absichtlich nicht versioniert; jedes Skript baut sie aus dem Datensatz neu auf und ist fortsetzbar, sodass ein auf einem reinen CPU-Rechner unterbrochener Lauf einfach neu gestartet werden kann und fortgesetzt wird.

Die Skripte bilden eine Produzent→Konsument-Kette durch diese Caches. Führen Sie sie daher in dieser Reihenfolge aus (jeder Schritt benötigt nur den Datensatz plus die von früheren Schritten geschriebenen Caches):

root@kitploit:~
pip install -r requirements.txt

python structure_graph_gnn.py        # Strukturgraphen + best.json (Optuna) + Struktur-GNN-Ergebnis
python corrected_bertgnn_retrain.py  # Hold-out-Validierungs-Neutraining (Kettengraph) -> korrigiertes Ergebnis
python extract_train_cls.py          # BERT-[CLS]-Einbettungen des Trainings-Splits (train_cls.npy)
python bert_only_ablation.py         # Nur-BERT-Köpfe auf dem identischen Testsatz
python obfuscation_robustness.py     # trainiert + cached gnn_model.pt / mlp_model.pkl; Evasion-Recall
python robustness_1_sensitivity.py   # Sieben-Test-Robustheitssuite, ein Skript pro Test
python robustness_2_adversarial.py
python robustness_3_obfuscation_extended.py
python robustness_4_adaptive.py
python robustness_5_crossdataset.py
python robustness_6_significance.py
python robustness_7_calibration.py
python metrics_summary.py            # vollständige Metriktabellen pro Klasse
python complexity_breakdown.py       # Genauigkeit nach Abfragekomplexität (Tabelle 4)
python make_result_figures.py        # Konfusionsmatrizen + Vergleichsdiagramme
python model_execution_times.py      # Trainings- + Inferenzzeit über alle Modelle

Alle Skripte lösen ihre Pfade relativ zum Repository auf, verwenden einen festen Seed (random_state=42) und benötigen keine Argumente. Die Ausführung auf der CPU wird vollständig unterstützt (eine GPU beschleunigt nur die Einbettungs- und GNN-Trainingsschritte).

Erwartete Reproduktionspräzision. Zahlen reproduzieren sich auf ungefähr ±0,1–0,2 Prozentpunkte und nicht bitgenau. Geringfügige Abweichungen stammen von CPU- gegenüber GPU-Ausführung, PyTorch-Nichtdeterminismus und davon, dass sich die Early-Stopping-Epoche zwischen Läufen um ein oder zwei unterscheidet. Die berichteten Schlussfolgerungen (der Graph bringt keinen Gewinn bei der sauberen Genauigkeit, verbessert aber die Robustheit gegenüber URL-Encoding-Evasion, und die zugehörigen statistischen Tests) sind innerhalb dieser Toleranz stabil.

Danksagungen

Betreuer: Professor Atta Badii (University of Reading). Dank auch an den Doktoranden Ahmed Ashlam für die Beratung während der Durchführung des Projekts. Beide werden in der Dissertation gewürdigt.

Zitierung

Wenn Sie diese Arbeit referenzieren:

Musoke, L. L. (2024). Enhancing Web Application Firewall with Machine Learning for SQL Injection Detection. MSc-Dissertation, University of Reading.

Lizenz

Veröffentlicht unter der MIT-Lizenz.

Begleitrepository

Dieses GitHub-Repository spiegelt die ursprüngliche Einreichung im institutionellen Gitlab der University of Reading wider: https://csgitlab.reading.ac.uk/qz820024/sql-injection-pipeline-project.


Erklärung zur Originalarbeit (aus der Dissertation): „Ich, Lilliane Linnet Musoke, vom Fachbereich Informatik der University of Reading, bestätige, dass dies meine Originalarbeit ist, außer in den Fällen, in denen ich die Beiträge anderer Autoren ausdrücklich anerkannt habe."

Tool herunterladen