Dotenv (.env)
مواصفة قياسييُستخدم ملف .env على نطاق واسع لتخزين متغيرات البيئة في ملفات نصية، لكن قواعد الصياغة وطريقة التحميل تختلف حسب الأداة؛ فهو ليس معيار إعدادات عالميًا.
تحويل ENV إلى JSON
محول مجاني داخل المتصفح للتحويل من ENV إلى JSON. قم بتحويل الملفات فوراً على جهازك.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات ENV من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات ENV من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
41 2D 5A 5F 3Dتمثيل ASCII: KEY=VAL
التوحيد القياسي: مواصفة Twelve-Factor App / معيار dotenv
المواصفات الفنية
| هيكلية الحاوية | أزواج نصية من نوع key=value لتعريف متغيرات بيئة نظام التشغيل، مع دعم اختياري للبادئة export وعلامات الاقتباس |
| الضغط | تدفق نصي غير مضغوط |
| ترتيب البايتات (Endianness) | تدفق نصي بترميز UTF-8 |
| مساحات الألوان | لا ينطبق (ملف إعدادات) |
| القنوات والبنية | أسماء متغيرات البيئة وقيمها النصية وأسطر التعليقات (#) |
| الحد الأقصى للأبعاد | طول الملف غير محدود |
| الشفافية | لا ينطبق |
| البث والتحميل التدرجي | تنفيذ متتابع بالتدفق، سطرًا بسطر |
مصفوفة المقارنة التقنية: ENV مقابل المنافسين
| السمة التقنية | ENV (الحالي) | JSON | YAML | INI |
|---|---|---|---|---|
| إدارة الأسرار | يفصل الأسرار عن الكود المصدري | يُضاف إلى المستودع افتراضيًا | يُضاف إلى المستودع افتراضيًا | يُضاف إلى المستودع افتراضيًا |
| وضوح الصياغة | لا حاجة إلى نصوص تمهيدية مكررة: KEY=value | يتطلب أقواسًا وعلامات اقتباس | يتطلب مسافات بادئة صارمة | يتطلب رؤوس الأقسام |
| ربط بيئة نظام التشغيل | مطابقة مباشرة 1 لـ 1 مع process.env | يتطلب تحليل البيانات وتحويلها إلى كائن | يتطلب تحليل البيانات وتحويلها إلى كائن | يتطلب تحليل البيانات وتحويلها إلى كائن |
| البنية الهرمية للبيانات | أزواج مفتاح وقيمة بسيطة بلا تداخل | تدرج هرمي متداخل بلا حدود | تدرج هرمي متداخل بلا حدود | نطاقات أقسام من مستوى واحد |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
تعطل التطبيق مع رسالة 'TypeError: Cannot read property of undefined' لمتغيرات البيئة المتوقعة.
السبب الجذري: وجود مسافات حول علامة التساوي (مثل 'KEY = VALUE' بدلًا من 'KEY=VALUE') أو علامات اقتباس غير مغلقة.
الاسترداد: وحّد صياغة إعدادات البيئة ونسّقها باستخدام أداة تنقية الإعدادات من File2File.app.
تحليل الأمان ومتجهات الهجوم على المحلّل
لا ترفع ملفات .env إلى Git مطلقًا؛ أضفها دائمًا إلى .gitignore واستخدم خدمات لإدارة الأسرار في بيئة الإنتاج.
ناقلات الهجوم المعروفة
- إضافة الملف إلى Git عن طريق الخطأ، ما يكشف مفاتيح AWS لبيئة الإنتاج وكلمات مرور قواعد البيانات على GitHub العام.
- سوء إعداد خادم الويب بما يتيح الوصول إلى ملف .env عبر طلبات HTTP العامة.
- حقن أوامر عبر توسيع متغيرات الصدفة دون تهريبها في أدوات تحميل dotenv.
أفضل الممارسات الدفاعية: لا ترفع ملفات .env إلى Git مطلقًا؛ أضفها دائمًا إلى .gitignore واستخدم خدمات لإدارة الأسرار في بيئة الإنتاج.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- من أفضل الممارسات الأمنية: إبقاء كلمات مرور قواعد البيانات ورموز API ومفاتيح التشفير السرية خارج مستودعات الشيفرة المصدرية.
- تُستخدم ملفات .env في عدة بيئات، لكن الصياغة وطريقة التحميل تختلفان حسب الأداة.
- يسهل قراءته وكتابته وأتمتة التعامل معه في نصوص النشر ومسارات التكامل المستمر.
القيود الفنية والسلبيات
- خطر كبير للتسريب العرضي: قد يرفع المطورون ملفات '.env' إلى مستودعات GitHub العامة عن طريق الخطأ.
- لا يوفر تشفيرًا مدمجًا للبيانات المخزنة من دون أدوات متخصصة مثل Doppler أو dotenv-vault.
- لا يدعم هياكل البيانات المتداخلة المعقدة (فالقيم سلاسل نصية بسيطة فقط).
معلومات تقنية طريفة
- تنص القاعدة الثالثة من منهجية Twelve-Factor App صراحةً على تخزين الإعدادات في متغيرات البيئة.
- يبدأ اسم الملف '.env' بنقطة، لذا تتعامل معه أنظمة Unix كملف مخفي افتراضيًا.
- توصي قوالب .gitignore عادةً بإضافة .env إلى قائمة الملفات المستثناة.
الأسئلة التقنية المتكررة
ما هو ملف .env؟
ملف .env هو ملف نصي بسيط يخزن المفاتيح السرية وكلمات مرور قواعد البيانات وإعدادات البيئة في أزواج KEY=VALUE، ليبقيها آمنة ومنفصلة عن الشيفرة المصدرية.
هل يجب أن أضيف ملف .env إلى GitHub؟
لا. لا ترفع ملف .env إلى GitHub أو أي مستودع عام. فقد يؤدي ذلك إلى كشف كلمات المرور السرية ومفاتيح API.
كيف يمكنني تحويل ملف ENV إلى JSON؟
يمكنك تحويل ملفات .env بأمان إلى كائنات JSON منظمة أو ملفات YAML باستخدام File2File.app مباشرةً في المتصفح، من دون أن تغادر أي بيانات جهازك.