# hook network: قيّم عناوين URL ضد SSRF

> قيّم وجهة جلب واحدة أو أكثر ضد SSRF، مباشرة من سطر الأوامر.

Canonical: https://lagune.ai/ar-AE/docs/hooks/network
اللغة: ar-AE
الأصل: https://lagune.ai/docs/hooks/network
آخر تحديث: 2026-11-09

يحسم hook `network` ما إذا كانت وجهة الجلب من جهة الخادم آمنة من **SSRF** (طلب يمكن توجيهه إلى خدمات داخلية، أو بيانات تعريف السحابة، أو مضيفين خاصين). وهو المحرك الحتمي خلف [التخصص `network`](https://lagune.ai/ar-AE/docs/catalog)، ويمكنك تشغيله بنفسك.

## التشغيل

مرّر كل وجهة عبر `--url`. يطبع hook كلمة واحدة لكل وجهة، يشرحها الجدول أدناه.

**وجهة واحدة**

```bash
npx lagune read network --url 'http://example.com/'
# => safe

npx lagune read network --url 'http://0x7f000001/'
# => private-target
```

**عدة وجهات**

كرّر `--url` لتقييم قائمة سماح أو قائمة حظر كاملة في استدعاء واحد، بحكم في كل سطر، بالترتيب.

```bash
npx lagune read network \
  --url 'http://example.com/' \
  --url 'http://[::1]/' \
  --url 'http://allowed.com@evil.example/'
# => safe
# => private-target
# => parser-divergent
```

يحلّ المضيف كما تحلّه الشبكة، فلا تفلت الصيغ المرمّزة للعنوان الداخلي: الصيغ الست عشرية، والثمانية، والعشرية دون نقاط، والمختصرة، و IPv6، و IPv4-mapped، كلها تُقرأ `private-target`. وحيث تقرأ أداة تحقق متساهلة والجالب الحقيقي مضيفين مختلفين، يكون الحكم `parser-divergent`.

## كيف تقرأ الحكم

| الحكم              | المعنى                                                                                              |
| ------------------ | --------------------------------------------------------------------------------------------------- |
| `safe`             | تتصل الوجهة بمضيف عام، وستقرأ أداة التحقق المتساهلة المضيف نفسه.                                    |
| `private-target`   | يُحلّ المضيف إلى عنوان خاص، أو loopback، أو link-local، أو غير محدد، أو عنوان بيانات تعريف السحابة. |
| `parser-divergent` | ستقرأ أداة التحقق النصية المتساهلة مضيفًا حقيقيًا مختلفًا عن الذي يتصل به الجالب.                   |
| `invalid url`      | لا يُحلَّل النص كعنوان URL، فلا يوجد ما يُجلب.                                                      |

لا يعني السماح إلا `safe`. وتعامل مع `private-target` و `parser-divergent` و `invalid url` جميعًا على أنها حظر.

### خيارات CLI

| الخيار  | القيمة            | الوصف                                                          |
| ------- | ----------------- | -------------------------------------------------------------- |
| `--url` | عنوان URL أو مضيف | تحقق من وجهة واحدة. كرّره للتحقق من عدة وجهات، بحكم في كل سطر. |

يلزم `--url` واحد على الأقل. ولا تكون الوجهة أبدًا وسيطًا موضعيًا مجردًا، لذلك لا يمكن الخلط بينها وبين خيار.

**لماذا قيمة خيار**

تُمرَّر كل وجهة كقيمة خيار، ولا تُدمج في الأمر أبدًا. فالقيمة التي تحتوي على علامات اقتباس أو backticks تبقى خاملة ولا يمكنها الحقن في الصدفة. ضعها دائمًا بين علامتي اقتباس مفردتين حتى لا توسّعها الصدفة أولًا.

**ما لا يغطيه**

hook دالة نقية ولا يحلّ أسماء DNS أبدًا، لذلك تخرج ثغرتان وقت التشغيل عن نطاقه: **DNS rebinding** (اسم يُحلّ إلى عنوان عام عند الفحص وإلى عنوان داخلي عند الجلب) و **سلاسل إعادة التوجيه** (قفزة أولى تجتاز الفحص، ثم تعيد التوجيه إلى الداخل). أغلقهما بالحلّ مرة واحدة والاتصال بالعنوان الذي تم التحقق منه، وبرفض إعادة التوجيه. ويثبّت أسماء loopback المحجوزة (`localhost` وعائلة `.localhost`) على أنها داخلية دون أي استعلام، لكن أي اسم DNS آخر يُقرأ `safe`، لأن الجزم بأنه يُحلّ إلى الداخل يتطلب الحلّ: وقائمة السماح هي التي تحرس هذه الأسماء، وهي ما يتحقق منه هذا الفاحص.

**نصيحة**

هذا هو الفحص نفسه الذي يشغّله [التخصص `network`](https://lagune.ai/ar-AE/docs/catalog) لإثبات أن مرشّح الوجهات يصمد.

## الأسئلة الشائعة

### كيف أختبر عنوان URL ضد SSRF؟

شغّل hook network. يقيّم وجهة الجلب ويعيد safe أو private-target أو parser-divergent أو invalid url. ولا يعني السماح إلا safe.

### ما هو عنوان URL من نوع parser-divergent؟

عنوان URL تقرؤه المحللات المختلفة بشكل مختلف، وهو أسلوب كلاسيكي لتجاوز الحماية من SSRF. وينبّه hook network إليه بدلًا من السماح به.
