متوفر أيضًا بلغات أخرى: English · Español · Português · Français
مولّد ومدقّق security.txt
أنشئ ملف security.txt مطابقًا لموقعك، أو افحص سطرًا سطرًا ملفًا تنشره أصلًا، وفق RFC 9116.
ما ملف security.txt؟
ملف security.txt ملف نصي قصير يدلّ من وجد ثغرة في موقعك على الجهة التي يبلّغها. وقبل وجوده كان على الباحث الذي يلاحظ خللًا أن يخمّن: يجرّب العنوان security@ راجيًا أن يقرأه أحد، أو ينبش صفحة اتصال، أو ييأس فيسكت. وقد استبدل الملف بذلك التخمين موضعًا ثابتًا وطائفة صغيرة من الحقول المسمّاة، وصار معيارًا — هو RFC 9116 — في نيسان 2022.
والصيغة بسيطة عن قصد. كل سطر اسم حقل، ثم نقطتان، ثم مسافة، ثم قيمة؛ والأسطر التي تبدأ بـ # تعليقات. وحقلان اثنان فقط مطلوبان: Contact ويقول إلى أين تُرسل البلاغات، وExpires ويقول متى يكف هذا الكلام عن أن يكون موثوقًا. وما عدا ذلك — رابط سياستك، ومفتاح تعمية، وصفحة شكر، واللغات التي تقرؤها — اختياري.
وهو أيضًا من الصغر بحيث يُخطئ فيه المرء دون أن ينتبه أحد، ولهذا وُضع المدقّق في هذه الصفحة. فمن بين الملفات التي تنشرها أكثر خمسمئة نطاق ازدحامًا على الويب، أقلُّ من نصفها اليوم موافق للمعيار الذي كُتب عليه.
كيفية الاستخدام
- أدخل جهة التواصل وتاريخ الانتهاء. قيمة Contact لا بد أن تكون معرّف URI، فالبريد يحتاج البادئة mailto: والهاتف يحتاج tel:. وحقل الانتهاء مملوء سلفًا بسنة من اليوم، وهي أبعد ما يوصي به المعيار.
- أضف ما تحتاجه من الحقول الاختيارية. رابط سياسة، ومفتاح OpenPGP، وصفحة شكر، واللغات التي تقرؤها. وContact وأكثر الحقول غيره يجوز تكرارها، أما Expires وPreferred-Languages فلا.
- انشره، أو افحص ما تنشره الآن. موضع الملف /.well-known/security.txt عبر HTTPS. وانتقل إلى لسان الفحص لتلصق ملفًا قائمًا فترى كل مشكلة برقم سطرها.
أين تُخطئ الملفات المنشورة
الأرقام هنا مصدرها طلبُ الموضعين الممكنين من أكثر خمسمئة نطاق ازدحامًا على الويب بحسب ترتيب Tranco، ثم إمرارُ كل ما عاد على المدقّق نفسه الذي تعرضه هذه الصفحة. فمئة وخمسة عشر نطاقًا منها تنشر شيئًا، وخمسة وأربعون منها — أي 39.1 بالمئة — بلا خطأ واحد.
وأشيع العيوب بفارق كبير غيابُ حقل Expires: ثمانية وأربعون ملفًا، أي 41.7 بالمئة من كل المنشور. وليست قاعدة غامضة، فExpires أحد الحقلين الوحيدين المطلوبين، ولغيابه تفسير نظيف: لم يكن موجودًا في المسودات الأولى التي نفّذ الناس عنها، وإنما أُضيف في الطريق إلى أن يصير RFC. فأكثر المشكلات تكرارًا هو الحقل الذي أضافه المعيار أخيرًا، في ملفات كانت صحيحة يوم كُتبت.
وللانتهاء وجه ثانٍ من الخلل: أحد عشر ملفًا من هذه تعلن أنها انتهت صلاحيتها فعلًا، وهو بتعريف المعيار نفسه يعني ألا يُعتمد على محتواها. فملف شبكة اجتماعية معروفة جدًا حمل تاريخًا في كانون الثاني 2024. وثلاثة عشر غيرها تدفع التاريخ بعيدًا حتى لا ينقضي انقضاءً ذا فائدة: ملف محرّك بحث كبير يقول 2030، أي بعد أربع سنوات تقريبًا، في مقابل توصية بألا يُتجاوز عام واحد.
وأربعة عشر ملفًا تعطي في Contact ما ليس معرّف URI. وهذا هو الفخ الذي تنصبه الصيغة لمن يكتب ما يبدو بدهيًا: فعنوان مجرد مثل psirt@example.com يُقرأ قراءةً سليمة وهو غير صالح، لأن الحقل موصوف بأنه URI ويلزمه mailto: قبله. وإحدى شركات البرمجيات المعروفة تنشر جهة اتصال https صحيحة، ثم في السطر التالي عنوانًا مجردًا. وإن احتجت إلى بناء واحد فمولّد روابط mailto عندنا يكتبه كاملًا.
وستة عشر ملفًا فيها سطر ليس حقلًا، وأكثره عنوان فيه مسافات، وبضعة منها نثر خالص: فقرة تشرح كيف يُبلَّغ عن خلل، منشورة في المسار الذي يُنتظر فيه ملف تقرؤه الآلة. وستة لا حقل Contact فيها البتة، إذ ابتكرت لها اسمًا من عندها.
أين يوضع الملف، وما الذي لا يشمله
المعيار محدَّد في الموضع: لا بد أن يكون الملف في /.well-known/security.txt. أما نسخة في جذر الموقع فلا تُقبل إلا للتوافق القديم، وحين يوجد الاثنان فالمعتمد ما في well-known. وستة وعشرون من النطاقات المقيسة تخدمه في الموضعين، وهذا سليم؛ وثمانية لا تخدمه إلا في الجذر، فأداةٌ تتبع المعيار قد لا تنظر هناك أبدًا.
ونطاق سريان الملف أضيق مما يفترضه أكثر الناس: فهو لا يسري إلا على النطاق أو عنوان الإنترنت الذي جُلب منه بعينه، لا على النطاقات الفرعية ولا على النطاق الأب. فملف على example.com لا يقول شيئًا عن أيٍّ.example.com، وكل مضيف يحتاج ملفًا فإنما يحتاج ملفه هو.
والحقول غير المعروفة ليست أخطاء. فالمعيار يأمر قارئ الملف بتجاهل أي حقل لا يعرفه، ولذلك يشير المدقّق إلى الاسم غير المسجَّل بوصفه ملاحظة لا مشكلة. وهذا اختيار مقصود من المعيار، ولو عدّه مدقّقٌ إبطالًا لناقض الوثيقة نفسها التي يدقّق بموجبها.
وحقلان مما يظهر في هذه الصفحة لا ذكر لهما في أي موضع من RFC 9116. فالسجل تحفظه IANA وقد نما بعد النشر: حقل CSAF الذي يشير إلى مصدر تنبيهات تقرؤه الآلة، وهو الحقل الوحيد في الصيغة الذي لا تملك IETF التحكم في تغييره؛ وحقل Bug-Bounty، وهو الوحيد الذي ليست قيمته معرّفًا ولا تاريخًا ولا وسم لغة، وإنما True أو False لا غير.
ومما لا تفعله هذه الصفحة التحققُ من التواقيع. فقد يأتي الملف ملفوفًا بتوقيع OpenPGP، وثمانية عشر من المقيسة كذلك؛ وتُفحص الحقول في داخله فحصًا عاديًا، أما تأكيد التوقيع فيقتضي التعامل مع المفاتيح، وذاك عمل غير قراءة صيغة نصية.
لماذا هي مجانية؟
هذا كله صيغة نصية. فتوليد الملف وصلُ سلاسل، وفحصه محلِّل، وكلاهما يعمل داخل متصفحك، فلا خادم يُدفع ثمنه ولا حساب يُنشأ.
ولا يُرفع شيء مما تكتبه ولا يُخزَّن ولا يُسجَّل. وهذا هنا أثقل وزنًا منه في أكثر الصفحات: فملف التواصل الأمني عام بطبيعته، أما المسودة التي ما زلت تحرّرها فليست كذلك، ولا الملف الذي لصقته لتعرف ما خطبه.