---
title: "حدا لقى ثغرة بموقعك: كيف بيعرف لمين يبعتها؟ ملف security.txt"
description: "الـ security.txt ملف نص صغير على /.well-known/security.txt بيقول للباحث الأمني وين يبعت الثغرة يلي لقاها. فيه حقلين لازمين: Contact وExpires، والباقي اختياري."
url: https://ihsanalapsi.dev/articles/security-txt-vulnerability-contact
lang: ar
date: 2026-11-04
updated: 2026-11-04
tags: ["أمن التطبيقات", "تطوير الويب"]
author: Ihsan Alapsi (إحسان العبسي)
---
# حدا لقى ثغرة بموقعك: كيف بيعرف لمين يبعتها؟ ملف security.txt

باحث أمني لقى ثغرة بموقعك اليوم، وبدّه يخبرك قبل ما يلاقيها حدا تاني. بيدوّر على عنوان، وما بيلاقي غير فورم «تواصل معنا» بيروح لفريق المبيعات. بآخر هالمقال رح يكون عندك ملف نص صغير بيحل هالمشكلة، بتكتبه وبتفحصه بجلسة وحدة.

## شو هو ملف security.txt؟

الـ security.txt ملف نص عادي بيقعد بمكان ثابت بموقعك، وبيقول للباحث الأمني وين يبعت الثغرة يلي لقاها.

الملف موصوف بـ [المواصفة RFC 9116](https://www.rfc-editor.org/rfc/rfc9116.html)، يلي طلعت بنيسان 2022 باسم «A File Format to Aid in Security Vulnerability Disclosure». الفكرة بسيطة: كل موقع بيحط نفس الملف بنفس المكان، فالباحث ما بيضطر يخمّن.

## ليش البلاغ بيضيع بلا هالملف؟

البلاغ بيضيع لأنو الشخص يلي لقى الثغرة ما بيعرفك، وما في مكان متفق عليه يدوّر فيه على عنوانك.

الغلطة هون مش تقنية. الشركة بتصرف على الحماية، وبتنسى إنو أول شخص بيلاقي المشكلة ممكن يكون غريب حسن النية. هالغريب عنده خيارات قليلة: يبعت للدعم الفني ويستنى، أو يكتب بمنشور عام، أو يترك الموضوع. بالحالتين الأخيرتين إنت آخر واحد بيعرف.

والملف القديم غلطة تانية. عنوان موظف ترك الشغل، أو إيميل ما حدا بيفتحه، أسوأ من ما في عنوان: الباحث بيبعت وبيفكّر إنك عرفت.

## وين بينحط الملف، وكيف لازم ينخدم؟

الملف بينحط على المسار `/.well-known/security.txt` بنطاقك، وبينخدم على HTTPS كنص عادي.

المواصفة بتطلب تلات شغلات بالخدمة:

1. المسار تحت `/.well-known/`، يعني `https://example.com/.well-known/security.txt`.
2. الوصول للملف بـ `https`، مش http.
3. نوع المحتوى `text/plain` ومعه `charset=utf-8`.

إذا عندك أكتر من نطاق (الموقع، والـ API، ولوحة الإدارة)، حط الملف على كل واحد بتستقبل عليه زوار.

## شو لازم يكون جوّا الملف؟

جوّا الملف لازم يكون حقلين بس: Contact وExpires. كل حقل غيرهن اختياري.

هيك بيطلع أصغر ملف صالح:

```
Contact: mailto:security@example.com
Expires: YYYY-MM-DDThh:mm:ssZ
```

بدّل `YYYY-MM-DDThh:mm:ssZ` بتاريخ ووقت حقيقيين.

- Contact هو العنوان يلي بتوصله البلاغات، ولازم يكون موجود دايماً. بيقبل إيميل بـ `mailto:`، أو رقم بـ `tel:`، أو صفحة بـ `https:`. وإذا حطيت أكتر من سطر Contact، الترتيب هو ترتيب الأفضلية.
- Expires هو التاريخ يلي بعده الملف ما عاد ينوثق فيه، ولازم ينكتب مرة وحدة بس. المواصفة بتنصح يكون أقل من سنة لقدّام، لحتى ما يضل ملف قديم معلّق.

وبعدها فيك تزيد حقول اختيارية حسب شو عندك:


| الحقل               | شو بيعطي الباحث                                                        |
| ------------------- | ---------------------------------------------------------------------- |
| Policy              | رابط لسياسة البلاغات: شو مسموح يجرّب وشو لأ                            |
| Encryption          | رابط لمفتاح التشفير يلي بيبعتلك فيه بأمان (الرابط بس، مش المفتاح نفسه) |
| Preferred-Languages | اللغات يلي بتفضّل تستقبل فيها البلاغ                                   |
| Canonical           | العنوان الرسمي للملف نفسه                                              |
| Acknowledgments     | صفحة بتشكر فيها الباحثين                                               |
| Hiring              | وظائف الأمان عندك                                                      |


إذا ما كتبت Preferred-Languages، الباحث رح يفترض إنك بتقرا إنجليزي. فإذا فريقك بيفضّل العربي، اكتبها: `Preferred-Languages: ar, en`.

## كيف تكتبه وتفحصه اليوم؟

بتكتب الملف بسطرين، وبتفحصه بطلبين من الـ Terminal.

1. افتح عنوان إيميل للأمان بيقراه أكتر من شخص بفريقك. إذا ما عندك فريق، خليه يوصل لإيميلك بس باسم ثابت.
2. اكتب الملف بالحقلين، وحط Expires قبل سنة من اليوم.
3. ارفعه على `/.well-known/security.txt`. إذا موقعك بيخدم الملفات الثابتة من مجلد `public`، حطه بـ `public/.well-known/`.
4. افحصه:

```bash
curl -sI https://example.com/.well-known/security.txt
curl -s https://example.com/.well-known/security.txt
```

بأول طلب دوّر على سطر `content-type`: لازم يكون `text/plain` ومعه `charset=utf-8`. بالتاني لازم يطلع الملف نفسه، مش صفحة HTML لموقعك. هالشي بيصير كتير بالمواقع يلي بتحوّل كل مسار مش معروف للصفحة الرئيسية.

5. حط بالتقويم تذكير قبل تاريخ Expires بشهر، لتحدّثه وتتأكد إنو العنوان لسا بيوصل.

## من وين تبلّش هلق؟

بلّش بعنوان الإيميل: هو القرار الوحيد يلي بياخد تفكير، والباقي ملف بسطرين. بعدها ارفع الملف وافحصه بالـ curl.

الملف بيفتح الباب، بس اللي بيصير بعده عندك: رد سريع وشكر للباحث بيخلّيه يبلّغك المرة الجاية كمان. وإذا عم ترتّب أمان موقعك من الأول، كمّل بـ [تفعيل HSTS صح](/articles/hsts-strict-transport-security) و[فحص كوكي الجلسة](/articles/session-cookie-flags-check). وإذا بدك حدا يدوّر على الثغرات قبل ما يلاقيها غريب، هاد شغل [مُحَصَّن](/muhassan).

مين بفريقك رح يقرا إيميل الأمان أول ما يوصل؟

## FAQ

**هل security.txt بيحمي موقعي من الاختراق؟**

لأ. هو عنوان بس: بيخلّي يلي لقى ثغرة يوصلك بسرعة بدل ما يضيع بلاغه أو يحكيه بمكان عام. الحماية نفسها بتضل بالكود والإعدادات.

**شو بصير إذا انتهى تاريخ Expires؟**

الملف بيصير قديم، والباحث ما بيعرف إذا العنوان لسا بيوصل لحدا. حط تاريخ أقل من سنة لقدّام متل ما بتنصح المواصفة، وحطلك تذكير تحدّثه قبل ما يخلص.

**هل لازم يكون عندي برنامج مكافآت للثغرات؟**

لأ. الحقل الوحيد يلي لازم مع Expires هو Contact. سياسة البلاغات وصفحة الشكر حقول اختيارية، فيك تزيدهن بعدين.

**بحط إيميلي الشخصي بـ Contact؟**

الأحسن عنوان مخصص للأمان بيقراه أكتر من شخص، متل security على نطاقك. الإيميل الشخصي بيضيع بين الرسايل، وبيوقف لما صاحبه يغيّر شغله.
