Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Final-project-SQL-injection-pipeline — خطوط أنابيب هجينة قائمة على التعلم الآلي لكشف حقن SQL في حركة مرور الويب، تجمع بين نماذج DistilBERT وBERT-GNN مع تدريب عدائي وتحليل للمتانة. | Kitploit
أدوات/GitHubGitHub/mlily2024/final-project-sql-injection-pipeline
تحليل الثغرات الأمنيةأمن الويبتعلم الآلةالأوراق والأبحاثالتعلم والتعليمكشف الشذوذ
GitHubmlily2024/final-project-sql-injection-pipeline

Final-project-SQL-injection-pipeline

خطوط أنابيب هجينة قائمة على التعلم الآلي لكشف حقن SQL في حركة مرور الويب، تجمع بين نماذج DistilBERT وBERT-GNN مع تدريب عدائي وتحليل للمتانة.

عرض المستودع
2منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

كشف حقن SQL — خطوط أنابيب التعلم الآلي الهجينة

الكود المصدري لرسالة الماجستير: تعزيز جدار حماية تطبيقات الويب باستخدام التعلم الآلي لكشف حقن SQL

المؤلفLilliane Linnet Musoke
الجامعةجامعة ريدينغ، قسم علوم الحاسوب
البرنامجماجستير علوم البيانات والحوسبة المتقدمة
المشرفالبروفيسور Atta Badii
تاريخ التقديم17 سبتمبر 2024

محتويات هذا المستودع

خطّا أنابيب هجينان جديدان للتعلم الآلي، كلٌّ منهما مُنفَّذ كدفتر Jupyter مستقل بذاته، لكشف هجمات حقن SQL في حركة مرور تطبيقات الويب:

  1. DistilBERT_Stacked_Ensemble_pipeline.ipynb — خط أنابيب تجميع مكدّس قائم على DistilBERT (متعلم فوقي). يستخدم التضمينات السياقية من DistilBERT كمدخلات لمجموعة من المصنفات التقليدية ومصنفات التجميع (الانحدار اللوجستي، XGBoost، SVM)، مدمجة تحت متعلم فوقي قائم على شبكة عصبية. يتم التدريب العدائي باستخدام طريقة إشارة التدرج السريع (FGSM)؛ ويتم ضبط المعلمات الفائقة باستخدام Optuna.
  2. BERT_GNN_pipeline_FINAL.ipynb — خط أنابيب هجين يجمع بين BERT والشبكات العصبية الرسومية. يولّد BERT تضمينات سياقية لاستعلامات SQL؛ بينما تقوم الشبكة العصبية الرسومية بنمذجة التمثيل الرسومي للاستعلام لالتقاط الأنماط البنيوية. تم ضبط المعلمات الفائقة باستخدام Optuna.

بالإضافة إلى مجموعة البيانات المستخدمة لتدريب وتقييم خطّي الأنابيب:

  1. SQL_Injection_Dataset.csv — استعلامات SQL مُصنَّفة (حميدة مقابل خبيثة).

النتائج الرئيسية (من الرسالة)

خط الأنابيبالدقةالدقة العدائية (FGSM)ملاحظات
التجميع المكدّس القائم على DistilBERT99.81%99.77%النهج الموصى به؛ زمن تنفيذ سريع
BERT-GNN99.48% (99.67% على البيانات المحجوزة)—فهم بنيوي فائق؛ زمن تنفيذ أطول (23.13 ثانية)؛ إعادة التدريب على التحقق المحجوز تصل إلى 99.67%، انظر RESULTS.md
أفضل خط أساس تقليدي (Random Forest)94.47%—تمت مقارنته في نفس الدراسة

جميع مقاييس الأداء الأربعة (الدقة، الضبط، الاستدعاء، درجة F1) حققت نفس الرقم الرئيسي لكلا خطّي الأنابيب الهجينين. الجداول الكاملة لكل نموذج، ومصفوفات الارتباك، ومنحنيات ROC، ومنحنيات التعلم، وتحليلات الحساسية موجودة في الدفاتر وفي الرسالة.

تتجاوز الدقة العدائية للتجميع المكدّس القائم على DistilBERT البالغة 99.77% النتيجة العدائية المماثلة التي أبلغ عنها Guan وآخرون (2023، Future Internet 15(4):133، DOI 10.3390/fi15040133) بنسبة 2.38% — انظر القسم 4.4 من الرسالة للمقارنة الكاملة.

كيفية الاطلاع على العمل

  • الدفاتر — ملفّا .ipynb في جذر المستودع يحتويان على كود خط الأنابيب الكامل (تحميل البيانات، المعالجة المسبقة، التضمين، التدريب، التقييم، المتانة العدائية، تحليل الحساسية). تمت إزالة المخرجات بحيث تُعرض الدفاتر بسرعة وبحجم صغير على GitHub؛ تشغيل أي دفتر من البداية إلى النهاية يعيد توليد كل شكل بياني.
  • معرض النتائج — RESULTS.md يعرض جميع الأشكال (مصفوفات الارتباك، منحنيات ROC، منحنيات التعلم، مخططات تحليل الحساسية، مقارنة النماذج) كمعرض قابل للعرض دون الحاجة لتشغيل أي شيء.
  • جميع الأشكال — تصديرات PNG فردية لكل شكل نتيجة موجودة في مجلد results/، مُسمّاة حسب خط الأنابيب والقسم.

كيفية تشغيل الدفاتر محليًا

تم اختباره على Python 3.10+ مع بيئة Jupyter. لتثبيت جميع التبعيات:

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

ثم افتح أي دفتر في JupyterLab أو VS Code وشغّل الخلايا من البداية إلى النهاية. كل خط أنابيب مستقل بذاته من البداية إلى النهاية: تحميل البيانات ومعالجتها المسبقة ← استخراج التضمين ← تدريب النموذج ← التقييم ← فحص المتانة العدائية ← تحليل الحساسية. يُنصح باستخدام GPU لخطوة تدريب BERT-GNN ولكنها غير مطلوبة للاستدلال أو للتجميع المكدّس القائم على DistilBERT.

متطلبات الموارد. خطوة استخراج التضمين في DistilBERT (وBERT) تُبقي نموذج اللغة وتضميناته لمجموعة البيانات الكاملة في الذاكرة في وقت واحد. يتطلب التنفيذ من البداية إلى النهاية حوالي 6–8 جيجابايت من ذاكرة الوصول العشوائي الحرة لخط أنابيب التجميع المكدّس القائم على DistilBERT و8–12 جيجابايت لـ BERT-GNN. تم تطوير الدفاتر أصلاً على Google Colab (الذي يوفر 12–16 جيجابايت وGPU مجاني). إذا كنت تشغّل محليًا على جهاز بذاكرة إجمالية 8 جيجابايت، أغلق التطبيقات الأخرى أولاً أو شغّل في Colab عبر روابط الشارات أعلى كل دفتر.

إعادة إنتاج نتائج المراجعة

البرامج النصية في جذر المستودع تعيد توليد التحليل الموسّع المُبلَّغ عنه في ورقة BERT-GNN المنقّحة (الاستئصال، التقييم المصحح على البيانات المحجوزة، الرسم البياني المراعي للبنية، متانة التمويه، مجموعة اختبار المتانة السباعية، المقاييس الكاملة، وزمن التنفيذ عبر النماذج). تقرأ ملف SQL_Injection_Dataset.csv المُلتزَم، وتكتب مخرجاتها إلى results/، وتخزّن مؤقتًا الوسائط الوسيطة (تضمينات BERT، الرسوم البيانية، النماذج المدربة) تحت .structure_work/ و.corrected_work/. مجلدات التخزين المؤقت هذه غير متتبَّعة عمدًا؛ كل برنامج نصي يعيد بنائها من مجموعة البيانات وهو قابل للاستئناف، لذا يمكن ببساطة إعادة تشغيل تشغيل توقف على جهاز CPU-only وسيستمر.

تشكّل البرامج النصية سلسلة منتج←مستهلك عبر تلك المخزونات المؤقتة، لذا شغّلها بهذا الترتيب (كل خطوة تحتاج فقط مجموعة البيانات بالإضافة إلى المخزونات المؤقتة المكتوبة بالخطوات السابقة):

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

python structure_graph_gnn.py        # الرسوم البيانية البنيوية + best.json (Optuna) + نتيجة GNN البنيوية
python corrected_bertgnn_retrain.py  # إعادة التدريب على التحقق المحجوز (رسم بياني متسلسل) -> النتيجة المصححة
python extract_train_cls.py          # تضمينات BERT [CLS] لشريحة التدريب (train_cls.npy)
python bert_only_ablation.py         # رؤوس BERT فقط على نفس مجموعة الاختبار
python obfuscation_robustness.py     # تدريب + تخزين gnn_model.pt / mlp_model.pkl؛ استدعاء التهرب
python robustness_1_sensitivity.py   # مجموعة اختبار المتانة السباعية، برنامج نصي واحد لكل منها
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            # جداول المقاييس الكاملة لكل فئة
python complexity_breakdown.py       # الدقة حسب تعقيد الاستعلام (الجدول 4)
python make_result_figures.py        # مصفوفات الارتباك + مخططات المقارنة
python model_execution_times.py      # زمن التدريب + الاستدلال عبر جميع النماذج

جميع البرامج النصية تحل مساراتها نسبةً إلى المستودع، وتستخدم بذرة ثابتة (random_state=42)، ولا تتطلب وسائط. التشغيل على CPU مدعوم بالكامل (GPU يسرّع فقط خطوات التضمين وتدريب GNN).

الدقة المتوقعة لإعادة الإنتاج. تتكرر الأرقام بدقة تبلغ تقريبًا ±0.1–0.2 نقطة مئوية وليس بتطابق حرفي. الاختلاف الطفيف يأتي من التنفيذ على CPU مقابل GPU، وعدم الحتمية في PyTorch، واختلاف عصر الإيقاف المبكر بفارق واحد أو اثنين بين التشغيلات. الاستنتاجات المُبلَّغة (أن الرسم البياني لا يضيف مكسبًا للدقة النظيفة ولكنه يحسّن المتانة ضد تهرب ترميز URL، والاختبارات الإحصائية المرتبطة) مستقرة جيدًا ضمن ذلك الهامش.

شكر وتقدير

المشرف: البروفيسور Atta Badii (جامعة ريدينغ). تقدير أيضًا لمرشح الدكتوراه Ahmed Ashlam على النصائح أثناء تنفيذ المشروع. كلاهما مُشار إليه في الرسالة.

الاقتباس

إذا أشرت إلى هذا العمل:

Musoke, L. L. (2024). تعزيز جدار حماية تطبيقات الويب باستخدام التعلم الآلي لكشف حقن SQL. رسالة ماجستير، جامعة ريدينغ.

الترخيص

صدر بموجب رخصة MIT.

المستودع المرافق

يعكس مستودع GitHub هذا النسخة الأصلية المُقدَّمة في Gitlab المؤسسي لجامعة ريدينغ: https://csgitlab.reading.ac.uk/qz820024/sql-injection-pipeline-project.


إعلان العمل الأصلي (من الرسالة): "أنا، Lilliane Linnet Musoke، من قسم علوم الحاسوب بجامعة ريدينغ، أشهد أن هذا عملي الأصلي، باستثناء الحالات التي أقررت فيها صراحةً بمساهمات مؤلفين آخرين."

تنزيل الأداة