رفعت موقع و الكل يقول ان .env يجب ان لا يوضع في public_html لان يمكن البحث عنه و الحصول على المعلومات. انا اتكلم عن مشروع بستخدام Laravel جربت ابحث عن طريق url و لم استطيع دخول .env اذا كيف استطيع البحث عنه. و ماهي الاشياء التي يجب فعلها لحماية موقعي؟؟
مجلد public_html في الاستضافة
لم تستطع الوصول إلى ملف .env عبر المتصفح بسبب أن أغلب الخوادم محمية افتراضياً فملف .htaccess الموجود في مجلد public يمنع الوصول إلى الملفات التي تبدأ بنقطة.
كما أن Document Root يشير إلى مجلد public فقط، وليس إلى المجلد الرئيسي للمشروع. هذا يعني أن كل الملفات خارج مجلد public (بما فيها .env) غير قابلة للوصول من المتصفح أصلاً.
والمشكلة تحدث في حالات محددة إذا كان هناك خطأ في إعدادات الخادم يسمح بقراءة الملفات، أو إذا تم تعطيل حماية .htaccess، عندها يصبح الملف معرضاً للخطر.
صحيح أنه في مشاريع لارافيل لا يتم رفع ملفات المشروع ضمن مجلد public_html ومن بينها ملف متغيرات البيئة env. لأن هذا الأخير في هاته الحالة يكون قابلا للوصول وبالتالي سيعرض موقعك للخطر.
الطريقة المعتادة هي رفع كامل الملفات في مجلد على مستوى مجلد public_html أي في نفس مجلده الحاوي. ويبقى مجلد public_html ليحتوي فقط على محتويات مجلد public في لارافيل. أيضا يستوجب تعديل index.php بما يستوفي هذا التعديل.
التحذير من وضع ملف .env داخل public_html صحيح تمامًا، لأن هذا المجلد مخصّص للملفات التي يمكن الوصول إليها مباشرة عبر المتصفح.
حتى إن لم تستطع الوصول إليه الآن، فهذا لا يعني أنه آمن دائمًا، فمجرد خطأ بسيط في إعداد السيرفر قد يجعل الملف مكشوفًا.
لماذا لا يجب وضع .env في public_html؟
لأن بعض الخوادم عند سوء الإعداد لا تتعامل مع الملف كملف غير قابل للعرض، فيتم عرض محتواه كنص عادي لو كتب أحدهم:
https://example.com/.env
ووقتها سيظهر:
- معلومات قاعدة البيانات
- مفاتيح API
- مفاتيح البريد
- إعدادات التطبيق
وكلها معلومات كارثية لو تسربت.
لماذا لا تستطيع الوصول إليه الآن؟
لأنك على الأغلب تضع مشروع Laravel بالطريقة الصحيحة:
public_html/
└── public/ ← هذا فقط يجب أن يكون ظاهرًا للويب
laravel_project_files ← تبقى خارج public_html
وملف .env موجود خارج مجلد public، وبالتالي لا يمكن الوصول له عبر المتصفح.
إذًا كيف “يبحث” الهاكر عنه؟
سهل جداً:
يحاول الدخول إلى:
/.env /.env.bak /.env.old /.env.save /.env.example
وفي حال كان الملف داخل public_html أو هناك خطأ في إعداد الخادم، سيظهر محتواه مباشرة بدون حماية.
كيف تحمي موقع Laravel كما يجب؟
1. ضع مشروع Laravel خارج public_html
هي أهم خطوة.
الوحيد الذي يجب أن يكون داخل public_html هو مجلد public فقط.
2. أعد كتابة المسارات (Document Root)
اجعل document root يشير إلى:
public_html/public
وليس إلى public_html نفسه.
3. استخدم ملف .htaccess لحجب أي ملفات حساسة
Laravel يضع حماية جاهزة في ملف:
public/.htaccess
لكن تأكد من وجود الحماية التالية:
<Files .env>
Order allow,deny
Deny from all
</Files>
4. تحديثات + أذونات الملفات
- لا تجعل صلاحيات الملفات 777 مهما كان السبب.
- استخدم 644 للملفات و755 للمجلدات غالبًا.
- حدّث Laravel والباكدجات أولًا بأول.
5. استخدام HTTPS
التشفير ضروري لحماية الترافيك من الـ MITM.
الخلاصة
إذا كان مشروع Laravel موجودًا بالشكل الصحيح (جميع الملفات خارج public_html وداخلها فقط مجلد public)، فملف .env غير قابل للوصول من المتصفح أصلًا وهذا هو الوضع الآمن.
أما وضع المشروع كاملًا داخل public_html فهو خطأ خطير وقد يؤدي لتسريب بيانات حساسة بدون أن تشعر.
التعليقات