
أداة تقييم تلقائي لجدران الحماية (WAF) تكتشف أنواع الجدران النارية، وتختبر 19 فئة هجوم باستخدام حمولات تفادي متقدمة، وتوفر تحليلاً للاختراق مرمّزاً بالألوان عبر CLI أو Cloudflare Worker أو Docker.
# فاحص WAF
[](https://github.com/SecH0us3/waf-checker/releases)
[](https://github.com/SecH0us3/waf-checker/releases)
[](packages/core)
[](packages/cli)
[]()
يساعدك هذا المشروع على التحقق من مدى جودة حماية جدار الحماية لتطبيقات الويب (WAF) لمنتجك ضد الهجمات الويب الشائعة. يمكن تشغيله كعامل Cloudflare (مع واجهة مستخدم ويب تفاعلية مدمجة) أو كأداة مستقلة بواجهة سطر أوامر Node.js.
## 🧪 تغطية الاختبارات والحالة
جميع الحزم مُختبرة بدقة عبر مجموعات آلية من اختبارات الوحدات والتكامل والاختبارات القائمة على الخصائص (fast-check fuzzing) ومرونة الشبكة والهندسة العكسية (امتثال أمان SSRF بنسبة 100%، وتقنيات التهرب من البروتوكول، ومنسّقات التقارير):
| الحزمة | تغطية الأسطر | العبارات | الدوال | مجموعة الاختبارات |
| :--- | :---: | :---: | :---: | :---: |
| [**`@waf-checker/core`**](https://github.com/sech0us3/waf-checker/blob/main/packages/core) | `93.0%` 🟢 | `92.6%` | `96.4%` | 🟢 282 ناجح |
| [**`@waf-checker/cli`**](https://github.com/sech0us3/waf-checker/blob/main/packages/cli) | `93.5%` 🟢 | `92.8%` | `96.7%` | 🟢 54 ناجح |
| [**`@waf-checker/worker`**](https://github.com/sech0us3/waf-checker/blob/main/packages/worker) | `ناجح` 🟢 | — | — | 🟢 30 ناجح |
| **إجمالي مجموعة المستودع الأحادي** | **`93.2%`** | **`92.7%`** | **`96.6%`** | **🟢 366 اختبارًا ناجحًا** |
## الميزات
### الاختبار الأساسي
- أدخل عنوان URL الهدف، واختر طرق HTTP (GET، POST، إلخ) وفئات الهجوم.
- يرسل الطلبات مع حمولات الهجوم (في المعاملات أو الترويسات أو كمسارات ملفات).
- نتائج الطرفية والويب مرمّزة بالألوان: 🟢 403/محظور = محظور، 🔴 2xx/5xx = تجاوز محتمل، 🟠 3xx = إعادة توجيه.
- تُعرض النتائج في جدول قابل للتصفية مع تفاصيل لكل حمولة.
### 🕵️ الهندسة العكسية لـ WAF ومصفوفة CRS (`--reverse`)
- **تعيين مجموعة قواعد OWASP الأساسية (CRS v3/v4)**: تدقيق معرّفات القواعد النشطة مقابل المعطّلة (`920xxx`، `921xxx`، `930xxx`، `931xxx`، `932xxx`، `933xxx`، `934xxx`، `941xxx`، `942xxx`، `943xxx`، `944xxx`) مع مستويات البارانويا (PL1-PL4).
- **كشف حد جسم الفحص**: فحص بالبحث الثنائي (8KB – 128KB، بدقة ~1KB) لتحديد حدود اقتطاع المخزن المؤقت.
- **كشف وضع تسجيل الشذوذ**: يفحص وضع التسجيل التعاوني مقابل وضع الحظر الصارم بالتعبيرات النمطية ويحدد حدود الدرجات.
- **فحص آمن لحد المعدل**: تصعيد آمن حتى 30 طلب/ثانية مع إنهاء مبكر فوري عند استلام HTTP 429 واستخراج `Retry-After`.
### 🛡️ الترقيع الافتراضي لجدار الحماية WAF والمعالجة التلقائية (`--patch` / أمر `patch`)
- **تخفيف فوري**: يحوّل تلقائيًا تجاوزات WAF المكتشفة (HTTP 200) إلى قواعد جدار حماية جاهزة للنشر، وإعدادات وكيل عكسي، وبنية تحتية ككود (Terraform HCL / Cloud CLI).
- **المنصات المدعومة (11 لهجة)**:
- **Cloudflare WAF**: تعبيرات Wirefilter (`http.request.uri.query contains ...` / `matches ...`) و`cloudflare_ruleset` Terraform HCL.
- **AWS WAF v2**: عبارات قواعد JSON أصلية (`ByteMatchStatement`، `RegexPatternSet`، `OrStatement`) و`aws_wafv2_rule_group` Terraform HCL.
- **Google Cloud Armor**: تعبيرات CEL (`request.path.matches(...)`، `request.headers[...]`)، وأوامر `gcloud compute security-policies` CLI، وTerraform `google_compute_security_policy`.
- **Azure WAF (Front Door & App Gateway)**: تعريفات JSON لقواعد مخصصة، وأوامر `az network front-door waf-policy` CLI، وTerraform `azurerm_cdn_frontdoor_firewall_policy`.
- **ModSecurity & OWASP Coraza**: توجيهات `SecRule` المتوافقة مع OWASP CRS (SecLang) مع دمج رموز `@pm`. مدعومة عبر `--patch modsecurity` أو `--patch coraza`.
- **NGINX**: كتل إعدادات أصلية `location ~* \.(ext)$ { return 403; }`، و`location ~ /\.(git|svn)`، و`map`.
- **HAProxy**: قوائم ACL أصلية عالية الأداء (`path_end -i`، `path_beg -i`، `query -m sub -i`، `req.hdr()`) مع `http-request deny deny_status 403`.
- **Caddy Server**: مطابقات مسماة بأسلوب Caddyfile (`@waf_patch_*`) مع تعبيرات CEL (`expression {http.request.uri.query}.matches(...)`) و`respond 403`.
- **Apache HTTP Server**: قواعد `mod_rewrite` (`RewriteCond %{QUERY_STRING}` / `%{REQUEST_URI}` / `%{HTTP_USER_AGENT}` + `RewriteRule ^ - [F,L]`) لـ `httpd.conf` أو `<VirtualHost>` أو `.htaccess`. مدعومة عبر `--patch apache`.
- **Envoy Proxy**: إدخالات مسار تطابق `:path`/الترويسات عبر RE2 `safe_regex` مع `direct_response: 403` (أو إعادة التوجيه والوسم في وضع المحاكاة) لـ route_configuration virtual_host. مدعومة عبر `--patch envoy`.
- **Kubernetes Ingress (K8s)**: ملفات YAML جاهزة للإنتاج من نوع `kind: Ingress` مع تعليقات `nginx.ingress.kubernetes.io/server-snippet`.
- **دفاع ثنائي المستوى**:
- **إصلاح عاجل صارم**: توقيعات رموز دقيقة مع **مخاطر إيجابيات كاذبة بنسبة 0%** للاستجابة الفورية لحوادث الثغرات الصفرية.
- **نمط استكشافي**: تعبيرات نمطية معممة تغطي بنية فئة الثغرة بأكملها.
- **استوديو المعالجة في واجهة الويب**: نافذة لوحة تحكم تفاعلية مع معاينات مباشرة عبر جميع الموردين، ونسخ بنقرة واحدة إلى الحافظة، وتبديل التنسيقات، وتصدير الملفات.
### فئات الهجمات (28 إجمالًا)
حقن SQL، XSS، حقن الأوامر، اجتياز المسار، SSRF، تضمين الملفات المحلية، الملفات الحساسة، إعادة التوجيه المفتوح، SSTI، XXE، حقن NoSQL، حقن GraphQL، هجوم JWT (الترويسة)، هجوم JWT (المعامل)، تلوث النموذج الأولي (جسم JSON)، تلوث النموذج الأولي (URL/المعامل)، حقن LDAP، حقن XPath، حقن صيغ جداول البيانات، Log4Shell (JNDI)، حقن CRLF، تلوث معاملات HTTP، User-Agent، تجاوز IP، تهريب طلبات HTTP، تسميم ذاكرة التخزين المؤقت للويب، تجاوز UTF8/Unicode، تجاوز حد فحص WAF (الحشو).
### كشف WAF
- الكشف التلقائي عن نوع WAF قبل الاختبار (Cloudflare، AWS WAF، OWASP Coraza، BunkerWeb، ModSecurity، Akamai، Imperva، F5 BIG-IP، إلخ).
- يقترح تقنيات تجاوز محددة بناءً على WAF المكتشف.
- يمكنه التبديل تلقائيًا إلى حمولات متقدمة خاصة بـ WAF.
### الحمولات المتقدمة والترميز
- حمولات تجاوز WAF — الترميز المزدوج، unicode، تغيير حالة الأحرف، حقن التعليقات، الحمولات متعددة اللغات.
- حمولات محسّنة — تقنيات تهرب حديثة.
- تنويعات الترميز — ترميز URL وUnicode وHTML Entity وHex وOctal وBase64 مع توليفات تلقائية.
- تجاوزات خاصة بـ WAF لـ Cloudflare وAWS WAF وModSecurity.
### التلاعب ببروتوكول HTTP
- التلاعب بأفعال HTTP — اختبار أفعال HTTP غير الشائعة.
- تلويث المعاملات — تكرار المعاملات وتقسيمها بين الاستعلام/النص.
- خلط نوع المحتوى — أنواع محتوى بديلة لتجاوز القواعد.
- ترويسات تهريب الطلبات.
- تنويعات حقن ترويسة المضيف.
- تجاوز فعل HTTP عبر الترويسات (`X-HTTP-Method-Override`، إلخ).
### الاختبار الدفعي
- اختبار عدة عناوين URL في وقت واحد.
- تزامن وتأخير قابلان للتكوين بين الطلبات.
- تتبع التقدم في الوقت الفعلي.
### 🔀 مقارنة الانحدار (`--compare` / `--fail-on-regression`)
- مقارنة فحص بتقرير JSON محفوظ مسبقًا لإظهار **التجاوزات الجديدة** (المحظورة سابقًا، وغير المحظورة الآن)، والحِمول المحظورة حديثًا، والاختبارات المضافة/المحذوفة.
- بوابة CI (`--fail-on-regression`) تفشل فقط عند *تدهور* وضع WAF، وليس عند قائمة النتائج الكاملة — مثالية لاكتشاف انحراف مجموعة القواعد المُدارة.
---
## بنية المشروع
المشروع مُنظَّم كـ monorepo من NPM Workspaces:
- [**`packages/core/`**](file:///Users/alex/src/waf-checker/packages/core): مكتبة اختبار الأمان الأساسية، وتعريف الحِمول، وتوقيعات بصمة WAF، ومشفّرات التمويه.
- [**`packages/worker/`**](file:///Users/alex/src/waf-checker/packages/worker): حزمة Cloudflare Worker التي تقدم واجهة الويب HTML/JS الثابتة ونقاط نهاية JSON API.
- [**`packages/cli/`**](file:///Users/alex/src/waf-checker/packages/cli): أداة واجهة سطر أوامر Node.js لتنفيذ عمليات التدقيق مباشرة من الطرفية.
---
## التثبيت والبناء
من الدليل الجذر، ثبّت التبعيات وابنِ جميع مساحات العمل:
```bash
npm install
npm run build
```
## كيفية التشغيل
### 1. نسخة الويب (Cloudflare Worker)
لتشغيل خادم تطوير Worker محليًا (يتطلب Wrangler):
```bash
npm run dev:worker
```
ستكون واجهة الويب متاحة على `http://localhost:8787` (أو منفذ آخر إذا كان 8787 مشغولًا).
لنشر Worker على Cloudflare:
```bash
npx wrangler deploy --workspace=packages/worker
```
يحتاج الـ Worker إلى خطة **Workers Paid**: إذ إن صفحات الفحص والتدقيق مُصمَّمة وفق حدّ 10,000 طلب فرعي لكل طلب (`[limits] subrequests` في `wrangler.toml`، و`WORKER_SUBREQUEST_LIMIT` في `packages/core/src/check.ts`). أما الخطة المجانية فتسمح بـ 50 طلبًا فرعيًا خارجيًا فقط لكل طلب: فصفحة فحص واحدة مع اختبار تجاوز User-Agent (المُفعَّل افتراضيًا في الواجهة) أو مع اتباع عمليات إعادة التوجيه تتجاوز هذا الحد.
### 2. إصدار CLI (Node.js)
#### تثبيته كأمر `waf-checker` عام (موصى به)
بعد تنفيذ `npm install && npm run build` في جذر المستودع، اربط الـ CLI ليعمل
من **أي دليل** — دون `cd` إلى المستودع ودون مسارات طويلة من نوع `node .../dist`:
```bash
# Expose `waf-checker` on your PATH from the built workspace
npm link --workspace @waf-checker/cli
# …now, from anywhere:
waf-checker --help
waf-checker check https://example.com
# Uninstall later with:
npm rm -g @waf-checker/cli
```
الحزمة المنشورة تتضمن شيفرتها، لذا يمكنك أيضًا تثبيت بناء معبأ
عالميًا دون المستودع: `npm pack --workspace @waf-checker/cli` ثم
`npm i -g ./waf-checker-cli-*.tgz`.
#### إكمال الصدفة (bash / zsh / fish)
يطبع `waf-checker completion <shell>` سكربت إكمال (احذف `<shell>` للكشف
التلقائي من `$SHELL`):
```bash
# bash
waf-checker completion bash | sudo tee /etc/bash_completion.d/waf-checker
# or, without root: echo 'source <(waf-checker completion bash)' >> ~/.bashrc
# zsh (into a directory on your $fpath)
waf-checker completion zsh > "${fpath[1]}/_waf-checker"
# fish
waf-checker completion fish > ~/.config/fish/completions/waf-checker.fish
```
#### التشغيل دون تثبيت عام
يمكنك دائمًا استدعاء نقطة الدخول المبنية مباشرةً:
```bash
# Print general CLI help and usage
node packages/cli/dist/index.js --help
# Print check command help (lists all methods, categories, and WAF vendors)
node packages/cli/dist/index.js check --help
# Discover detectable WAF vendors and payload categories (JSON for automation)
node packages/cli/dist/index.js list-wafs --json
node packages/cli/dist/index.js list-categories --json
```
#### كشف WAF
اكتشف مزوّد WAF الذي يقف خلف عنوان URL مستهدف:
```bash
node packages/cli/dist/index.js detect <url>
```
#### تدقيق حِمل الثغرة الأمنية
شغّل تدقيقًا ضد عنوان URL مستهدف:
```bash
# Default check (GET method, all payload categories)
node packages/cli/dist/index.js check https://example.com
# Custom check with specific methods, categories, and WAF evasion enabled
node packages/cli/dist/index.js check https://example.com -m GET,POST -c "SQL Injection,XSS" --auto-detect-waf --encoding-variations
```
#### عمليات التدقيق الدفعية
شغّل عمليات تدقيق دفعية لقائمة من عناوين URL محددة في ملف:
```bash
node packages/cli/dist/index.js batch targets.txt --concurrency 3
```
#### إنشاء التقارير
احفظ نتائج التدقيق بصيغة **SARIF** أو **JUnit XML** أو **HTML** أو **Markdown** أو **CSV** أو **JSON**:
```bash
# Generate SARIF report for GitHub Code Scanning
node packages/cli/dist/index.js check https://example.com -o results.sarif
# Generate JUnit XML for CI test reporting (GitHub Actions, GitLab CI, Jenkins)
node packages/cli/dist/index.js check https://example.com -o results.xml
# Generate interactive HTML report
node packages/cli/dist/index.js check https://example.com -o report.html
# Generate Markdown summary for CI
node packages/cli/dist/index.js check https://example.com -o summary.md
```
يُستنتج تنسيق التقرير من امتداد ملف الإخراج، أو يُضبط صراحةً باستخدام `-f, --format` (`json`، `csv`، `html`، `sarif`، `markdown`، `junit`). تصبح كل حِمل هجوم `<testcase>` في JUnit؛ ويُبلَّغ عن تجاوزات WAF على أنها `failure`s وأخطاء النقل/الخادم على أنها `error`s، بحيث تُظهرها منصات تشغيل CI مباشرةً.
#### تكامل CI/CD وحدود الحماية
أخفِق خطوط أنابيب CI/CD عندما يكون معدل الحماية أقل من الحد المطلوب أو عند اكتشاف تجاوزات:
```bash
# Fail if WAF protection rate is below 95%
node packages/cli/dist/index.js check https://example.com --threshold 95 -q
# Fail immediately on any detected bypass
node packages/cli/dist/index.js check https://example.com --fail-on-bypass -q
```
#### 🔀 مقارنة الانحدار (فحص مقابل فحص)
تتغير حالة WAF بمرور الوقت — فقد تُصدر الجهة المورّدة تحديثًا لمجموعة القواعد المُدارة، أو تُعطَّل قاعدة CRS، أو يُغيّر تغييرٌ في الأصل النتيجة. وبدلًا من إعادة فرز قائمة النتائج الكاملة في كل تشغيل، قارن مقابل تقرير JSON محفوظ مسبقًا واجعل بوابة CI تعتمد على *التدهور* فقط. تُعدّ الحمولة التي كانت `blocked` في التقرير الأساسي ولم تعد محظورة انحدارًا؛ أما الحمولة المحظورة حديثًا فتُعدّ تحسّنًا. تتم المطابقة بواسطة `(category, method, evasion technique, payload)`، وتُعامَل أخطاء الشبكة / الحجب من جهة الأصل على أنها غير حاسمة حتى لا تظهر أبدًا كانحدارات زائفة.
```bash
# Save a known-good baseline report
node packages/cli/dist/index.js check https://example.com -f json -o baseline.json -q
# Later: diff the current scan against it and print regressions/improvements
node packages/cli/dist/index.js check https://example.com --compare baseline.json -q
# Fail CI only when a previously-blocked payload is no longer blocked
node packages/cli/dist/index.js check https://example.com --compare baseline.json --fail-on-regression -q
```
#### 🛡️ الترقيع الافتراضي والمعالجة التلقائية
توليد قواعد جدار حماية جاهزة للنشر تلقائيًا عبر جميع المنصات الـ 11 المدعومة (`cloudflare`، `aws`، `gcp`، `azure`، `modsecurity`، `nginx`، `haproxy`، `caddy`، `apache`، `envoy`، `k8s`، أو `all`):
```bash
# Generate and save Cloudflare Terraform rules during audit
node packages/cli/dist/index.js check https://example.com --patch cloudflare --patch-output ./cloudflare-patch.tf
# Generate GCP Cloud Armor gcloud commands and Terraform
node packages/cli/dist/index.js check https://example.com --patch gcp --patch-output ./cloud-armor.sh
# Generate Azure WAF rules with simulation (Log) mode
node packages/cli/dist/index.js check https://example.com --patch azure --patch-action simulate --patch-output ./azure-rules.json
# Generate HAProxy ACLs for haproxy.cfg
node packages/cli/dist/index.js check https://example.com --patch haproxy --patch-output ./haproxy-patches.cfg
# Generate Caddyfile named matchers
node packages/cli/dist/index.js check https://example.com --patch caddy --patch-output ./patches.caddyfile
# Generate Apache mod_rewrite rules for .htaccess
node packages/cli/dist/index.js check https://example.com --patch apache --patch-output ./patches.htaccess
# Generate Kubernetes Ingress YAML manifests
node packages/cli/dist/index.js check https://example.com --patch k8s --patch-output ./ingress-patch.yaml
# Generate patches for all vendors from a saved JSON audit report file
node packages/cli/dist/index.js patch audit-report.json --waf all --output ./patches/
```
#### 🐳 اختبار بيئة Docker المحلية وبيئة Staging (`--allow-local`)
بشكل افتراضي، يحظر `waf-checker` بصرامة نطاقات عناوين IP الخاصة (`127.0.0.1`، `10.0.0.0/8`، `172.16.0.0/12`، `192.168.0.0/16`) لمنع تزوير الطلبات من جانب الخادم (SSRF). عند اختبار حاويات Docker المحلية الخاصة بك أو خوادم staging، استخدم `--allow-local`:
```bash
# Audit a local OWASP ModSecurity Docker container and run reverse engineering
node packages/cli/dist/index.js check http://127.0.0.1:8088/ --allow-local --reverse
# Audit a local Caddy or HAProxy reverse proxy and generate patches
node packages/cli/dist/index.js check http://127.0.0.1:8089/ --allow-local --patch caddy
```
#### 🧪 مجموعة اختبارات E2E الآلية الحية عبر Docker (`npm run test:e2e`)
شغّل عمليات تدقيق التكامل الشاملة من طرف إلى طرف مقابل حاويات Docker الحية (ModSecurity CRS وCaddy وHAProxy وNGINX وBackend) بأمر واحد:
```bash
npm run test:e2e
```
راجع [دليل اختبار WAF المحلي والتحقق الشامل E2E](https://github.com/sech0us3/waf-checker/blob/main/docs/LOCAL_WAF_TESTING.md) الكامل للحصول على المعايير الكاملة ومخططات البنية وخطوات إعادة الإنتاج اليدوية.
---
## 🚀 إجراء GitHub (CI/CD)
دمج اختبار أمان WAF الآلي في سير عمل GitHub Actions الخاص بك:
```yaml
name: WAF Security Audit
on:
push:
branches: [ main ]
schedule:
- cron: '0 0 * * 1' # Weekly audit
jobs:
waf-audit:
runs-on: ubuntu-latest
permissions:
security-events: write # Required for SARIF upload
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run WAF Checker
uses: SecH0us3/waf-checker@main
with:
target-url: 'https://staging.example.com'
threshold: '95'
enhanced: 'true'
advanced: 'true'
sarif-output: 'waf-results.sarif'
html-output: 'waf-report.html'
- name: Upload SARIF to GitHub Security Tab
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'waf-results.sarif'
- name: Upload HTML Report Artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: waf-audit-report
path: waf-report.html
```
### 3. إصدار Docker
يمكنك تشغيل واجهة سطر الأوامر (CLI) باستخدام Docker، إما بسحب الصورة المُعدّة مسبقًا من GitHub Container Registry أو ببنائها محليًا.
#### استخدام الصورة المُعدّة مسبقًا (موصى به)
صورة Docker المُعدّة مسبقًا متاحة على [GitHub Container Registry](https://github.com/SecH0us3/waf-checker/pkgs/container/waf-checker-cli) على `ghcr.io/sech0us3/waf-checker-cli`.
##### سحب الصورة
```bash
docker pull ghcr.io/sech0us3/waf-checker-cli:latest
```
##### عرض المساعدة
```bash
docker run --rm ghcr.io/sech0us3/waf-checker-cli:latest --help
```
##### تشغيل فحص
```bash
docker run --rm -it ghcr.io/sech0us3/waf-checker-cli:latest check https://example.com
```
##### تشغيل عمليات التدقيق الدفعية (تركيب دليل محلي)
```bash
docker run --rm -it -v "$(pwd):/data" ghcr.io/sech0us3/waf-checker-cli:latest batch /data/targets.txt --concurrency 3
```
#### البناء محليًا
##### بناء الصورة
```bash
docker build -t waf-checker-cli .
```
##### عرض المساعدة
```bash
docker run --rm waf-checker-cli --help
```
##### تشغيل فحص
```bash
docker run --rm -it waf-checker-cli check https://example.com
```
##### تشغيل عمليات التدقيق الدفعية (تركيب دليل محلي)
```bash
docker run --rm -it -v "$(pwd):/data" waf-checker-cli batch /data/targets.txt --concurrency 3
```
## 🔌 واجهة برمجة التطبيقات والتكامل (للمستهلكين الخارجيين وأدوات الفَزْز)
يكشف Cloudflare Worker عن واجهة برمجة تطبيقات REST عامة تستهلكها أدوات الفحص وأدوات الفَزْز (بما في ذلك [swazz](https://github.com/SecH0us3/swazz)). يتوفر مواصفة OpenAPI 3.1 الكاملة في [`docs/openapi.yaml`](https://github.com/sech0us3/waf-checker/blob/main/docs/openapi.yaml).
### نظرة عامة على نقاط النهاية
| نقطة النهاية | الطريقة | الوصف |
|---|---|---|
| `/api/waf-detect` | `GET` | يحدد بصمة بائع WAF، ودرجة الثقة، والتجاوزات المقترحة. |
| `/api/check` | `GET`، `POST` | يفحص الهدف بحمولات هجومية. يدعم الترقيم وتصفية الفئات. |
| `/api/virtual-patch` | `POST` | يولّد قواعد معالجة لـ Cloudflare وAWS وModSec وNGINX وCaddy وHAProxy وCoraza. |
| `/api/reverse-engineer` | `GET`، `POST` | يُجري هندسة عكسية لقواعد OWASP CRS وحدود الشذوذ وحدود الجسم. |
| `/api/audit` | `GET`، `POST` | **تدقيق موحّد**: ينفّذ الكشف والفحوصات الأمنية والتصحيحات الافتراضية، عادةً في طلب واحد (انظر ترقيم التدقيق). |
### ميزات التكامل الرئيسية
- **مغلّف الترقيم (`?envelope=1` أو `?envelope=true`)**:
يلفّ النتائج في مغلّف منظّم مع بيانات وصفية للترقيم:
```json
{
"results": [...],
"page": 0,
"pageSize": 50,
"total": 72,
"hasMore": true
}
```
*(احذف `?envelope=1` لتلقي مصفوفة JSON الافتراضية المجردة للتوافق مع الإصدارات السابقة).*
- **ترقيم صفحات التدقيق (`/api/audit`)**:
يُرجع التدقيق كل شيء في استجابة واحدة (`hasMore: false`) ما لم تتجاوز خطته ما تسمح به ميزانية الطلبات الفرعية لطلب Cloudflare Worker واحد (1658 عنصرًا). ويغطي ذلك حالة عدم اكتشاف أي WAF (513 عنصرًا) وجميع تنويعات التجاوز لكل WAF حتى Sophos (1321)؛ أما هدف محمي بـ Qrator (2441 عنصرًا) فيعود على صفحتين، وكذلك أي تدقيق تمرر فيه `pageSize` أصغر. تحمل الاستجابات `page` و`pageSize` و`total` و`hasMore` و`detectedWAF` (`""` إذا لم يُعثر على أي منها). ما دام `hasMore` صحيحًا، اطلب `page=<page + 1>&detectedWAF=<detectedWAF>`؛ فتمرير `detectedWAF` مرة أخرى يتخطى إعادة الاكتشاف (وتصبح `detection` عندئذٍ `null`) ويحافظ على استقرار حدود الصفحات. تغطي `patches` نتائج تلك الاستجابة؛ ولحزمة واحدة على عدة صفحات، أرسل `POST` بـ `results` المدمجة إلى `/api/virtual-patch`.
- **الثقة المعيارية (`/api/waf-detect`)**:
توفر `confidencePercent` (0–100) إلى جانب `confidence` الخام و`confidenceThreshold` (`40`).
- **حكم لكل نتيجة وأعلام الحظر**:
يتضمن كل `AuditResultItem` ما يلي:
- `blocked: boolean` — ما إذا كان WAF قد تدخل قبل الوصول إلى الأصل.
- `verdict: 'blocked' | 'passed' | 'exposed'` — نتيجة مميزة تفرّق بين التسريبات (`exposed`) وثغرات التغطية (`passed`).
- `error: string | null` — فئة خطأ صريحة عند انقطاع الشبكة (مثل `'timeout'`، `'dns'`، `'connection_reset'`).
- **رفض الفحص الذاتي (HTTP 422)**:
يرفض الفحوصات الذاتية العرضية التي تستهدف البنية التحتية للخدمة مع `{ "error": "self-scan refused", "code": "SELF_SCAN_REFUSED" }`.
---
## الاختبار
لتشغيل مجموعة الاختبارات على مستوى مساحة العمل (باستخدام Vitest):
```bash
npm test
```
---
اقرأ مدونتي على [yoursec.substack.com](https://yoursec.substack.com/)