العودة إلى التحديثات
New releaseJul 23, 2026

laravel-threat-detection v1.3.1

وسيط كشف تهديدات سلبي لـ Laravel. يسجل حقن SQL، XSS، RCE، ماسحات البوت، استكشافات 404 وأكثر من 175 نمط هجوم. لوحة تحكم مدمجة، تصدير fail2ban، تنبيهات Slack، وواجهة REST API. IDS، وليس WAF.

مشاركة

أحدث إصدار الاختبارات PHPStan المستوى 5 نمط الكود Pint إجمالي التنزيلات إصدار PHP الترخيص

Laravel Threat Detection

مراقبة أمنية وتسجيل الهجمات لـ Laravel. اكتشف وسجّل حقن SQL، XSS، RCE، اجتياز المسارات، ماسحات الروبوتات وفحوصات الاستطلاع بنمط /wp-admin — كل طلب عدائي يُسجَّل في قاعدة بياناتك مع سياق التطبيق الكامل. إنه نظام كشف تسلل (IDS)، وليس جدار حماية تطبيقات ويب (WAF): فهو لا يحجب أو يفلتر أو يعدّل أي طلب أبدًا.

ثبّت الحزمة، أرسل ثلاث هجمات — حقن SQL، اجتياز المسارات، XSS — كل واحدة تُرجع HTTP 200 لأن لا شيء محجوب، وجميعها محسوبة بالفعل في threat-detection:stats

هل أنت هنا لأنك رأيت شيئًا كهذا؟```

GET /wp-admin/setup-config.php 404 — on a site that isn't WordPress GET /.env 404 — someone wants your database password GET /?id=1' UNION SELECT password FROM 200 — SQL injection against a real route GET /phpmyadmin/index.php 404 — scanning for an admin panel

تلك الطلبات تصل بالفعل إلى تطبيق Laravel الخاص بك. يُظهر سجل الوصول لديك عنوان URL
ورمز الحالة، ولا شيء آخر — لا الحمولة المفكوكة، ولا أي من مساراتك تم استهدافه، ولا ما إذا كان نفس عنوان IP قد جرّب أربعين شيئًا آخر خلال هذه الساعة.

هذه الحزمة تجيب عن تلك الأسئلة. أضفها إلى أي تطبيق Laravel 10–13 وستبدأ
بفحص كل طلب HTTP مقابل أكثر من 150 نمط هجوم، وتقييم كل تطابق حسب
درجة الثقة وكتابته إلى قاعدة بياناتك — مع لوحة تحكم مدمجة، وتنبيهات Slack،
وإثراء جغرافي، وتصديرات fail2ban/blocklist. لا يتم حظر أي طلب أبدًا. فكّر في
كاميرا مراقبة، لا قفل: فهي تُظهر لك بالضبط من يتحسّس مساراتك، وكم مرة، وبأي تقنيات.

> مستخرجة من تطبيق إنتاجي ومُجرّبة على حركة مرور حقيقية. 1,857 اختبارًا، بلا تبعيات
> وقت التشغيل تتجاوز Laravel نفسه، وبلا حاجة لاتصال بالإنترنت للكشف.
>
> هل تقوم بالترقية؟ راجع [UPGRADING.md](https://github.com/jay123anta/laravel-threat-detection/blob/main/UPGRADING.md). هل تريد المساهمة؟ راجع [CONTRIBUTING.md](https://github.com/jay123anta/laravel-threat-detection/blob/main/CONTRIBUTING.md).

## ابدأ في أقل من دقيقة```bash
composer require jayanta/laravel-threat-detection
php artisan vendor:publish --tag=threat-detection-migrations
php artisan migrate

ثم أضف الوسيط إلى مجموعة web الخاصة بك (سطر واحد في bootstrap/app.php على Laravel 11+، أو app/Http/Kernel.php على Laravel 10) — المقتطف الكامل في Quick Start أدناه. هذا كل شيء؛ الكشف أصبح نشطًا.```bash php artisan threat-detection:doctor # confirms it is actually recording

---

## أين يندرج: IDS مقابل WAF مقابل الحافة

هذه الحزمة هي **نظام كشف تسلل سلبي على مستوى التطبيق** — يراقب ويسجل، ولا
يحجب. المقصود منها أن تكون *بجانب* WAF أو خدمة حافة، لا أن تحل محل أحدهما. كل طبقة ترى
شيئًا لا تراه الأخريات:

| | **هذه الحزمة** (IDS للتطبيق) | **WAF** (mod_security، Cloudflare WAF) | **الحافة / CDN** (Cloudflare) |
|---|:---:|:---:|:---:|
| يحجب الطلبات الخبيثة | ❌ تسجيل فقط | ✅ | ✅ |
| سياق التطبيق الكامل (المسار الدقيق، الحمولة المفكوكة، المستخدم الموثق) | ✅ | ⚠️ جزئي | ❌ |
| لوحة تحكم مدمجة + سجل تهديدات في قاعدة بياناتك | ✅ | ⚠️ يختلف | ⚠️ الحافة فقط |
| كشوفات خاصة بالتطبيق (مثل Aadhaar / PAN / IFSC PII) | ✅ أنماط مخصصة | ❌ | ❌ |
| يعمل دون اتصال / بدون خدمة خارجية | ✅ | ⚠️ يعتمد | ❌ |
| يوقف حركة المرور قبل وصولها إلى تطبيقك | ❌ | ✅ الحافة | ✅ |
| الإعداد | أمر `composer require` واحد | متوسط–عالٍ | منخفض–متوسط |
| التكلفة | مجاني، MIT | يختلف | طبقة مجانية + مدفوع |

**الخلاصة:** الحافة/WAF هو القفل على الباب؛ وهذه هي كاميرا المراقبة
*بالداخل*، مع سياق التطبيق لتخبرك بالضبط ما يُحاول على أي مسار، ومن قِبَل من،
وبأي تكرار. استخدمها لتغذية قرارات حقيقية — حظر fail2ban، حدود المعدل،
الحظر الجغرافي — ببيانات لا تراها طبقة الحافة أبدًا.

### ما هي ليست كذلك عمدًا

- **ليست WAF.** لا تحجب أو تصفّي أو تعدّل أي طلب أبدًا. استخدم Cloudflare،
  أو mod_security، أو WAF حقيقي للتنفيذ. (لا توجد طبقة حافة لتسليمها المهمة؟ إن
  [مساعدات جانب المشغّل](#acting-on-the-data-operator-side-blocking) تكشف
  قرارات الحزمة حتى تكتب وسيط الحظر الخاص بك في خمسة أسطر —
  كود التنفيذ يبقى لك، لا للحزمة.)
- **ليست بديلًا عن البرمجة الآمنة.** الاستعلامات المُعاملة، والتحقق من المدخلات، و
  تهريب المخرجات هي دفاعاتك الفعلية. تفترض هذه الحزمة أن كودك آمن بالفعل وتمنحك
  *رؤية*، لا حماية.
- **ليست خدمة حافة.** إذا كان بإمكانك وضع Cloudflare في المقدمة، افعل ذلك — ثم أضف هذه للتفاصيل
  على مستوى التطبيق التي لا تستطيع خدمات الحافة رؤيتها.
- **ليست كاشفًا كاملًا، ولا يمكن أن تكون كذلك.** مطابقة الأنماط تلتقط الهجمات التي
  *تبدو مثل* هجمات معروفة. تقنية جديدة، أو تقنية مألوفة أُعيدت كتابتها بما يكفي، سوف
  تمر دون تسجيل — ولن يُخبرك أحد أنها مرّت. الصمت هنا يعني
  "لم يتطابق شيء"، وليس أبدًا "لم يحدث شيء". ما يجعلها تستحق مكانها هو
  حركة المرور عالية الحجم منخفضة الجهد التي تشكّل معظم ما يضرب تطبيق Laravel
  عامًا: الماسحات الضوئية، مجسّات الاستطلاع، سلاسل الحقن الجاهزة، رشّ بيانات الاعتماد.
  تعامل مع سجل هادئ كغياب دليل، لا كدليل على الغياب.

### توقّع أن تُعلّم على محتواك الخاص من اليوم الأول

تثبيت غير مضبوط يُطلق على محتوى مشروع، ويجب أن تعرف ذلك قبل
التثبيت لا بعده. هذه قياسات فعلية، لا افتراضات — المجموعة تثبّت هذه القائمة بالضبط حتى لا تنحرف ([`LegitimateTrafficCorpusTest`](https://github.com/jay123anta/laravel-threat-detection/blob/main/tests/Feature/LegitimateTrafficCorpusTest.php)):

<!-- noise-floor:start -->
| طلب مشروع تمامًا | ما يسجّله تثبيت غير مضبوط |
|---|---|
| `how to write a UNION SELECT in postgres` مكتوب في مربع بحث | `SQL Injection UNION` / عالٍ |
| مقالة مدونة تحتوي على `<script>window.dataLayer=[];</script>` | `XSS Script Tag` / عالٍ |
| تذكرة دعم فيها خطأ `SELECT * FROM users WHERE id = 1` ملصق | `SQLi Variant` / عالٍ |
| توثيق يشرح أن `../../etc/passwd` هو حمولة الاجتياز الكلاسيكية | `Directory Traversal` / متوسط |
| نموذج ملف شخصي يجمع رقم جوال هندي حقيقي و PAN | `PAN Number Detected` / عالٍ |
<!-- noise-floor:end -->

**لا شيء من هذه أخطاء.** مقالة مدونة تحتوي على `<script>` هي، بايت ببايت،
حمولة XSS مخزّنة؛ والبحث عن `UNION SELECT` لا يمكن تمييزه عن محاولة
لذلك. لا شيء سوى سياق التطبيق يفصل بينهما، ولا يمكن لأي محرك أنماط
أن يوفّر لك ذلك السياق.

توفيره تغيير إعداد من سطر واحد — `safe_fields`، `safe_paths`،
`content_paths`، أو وضع `relaxed`. انظر [تقليل الإيجابيات الكاذبة](#reducing-false-positives).
**إذا كان تطبيقك يقبل نصًا منسّقًا، أو عينات كود، أو استعلامات بحث، فافعل ذلك قبل أن
تحكم على المخرجات.** الإعداد الافتراضي صاخب-لكن-صادق عمدًا بدلًا من
هادئ-وناقص: من الأسهل إسكات تطابق معروف من اكتشاف تطابق لم يُطلق أبدًا.

### إذن ماذا تفعل بها فعليًا؟

الفئات