رفعت موقع و الكل يقول ان .env يجب ان لا يوضع في public_html لان يمكن البحث عنه و الحصول على المعلومات. انا اتكلم عن مشروع بستخدام Laravel جربت ابحث عن طريق url و لم استطيع دخول .env اذا كيف استطيع البحث عنه. و ماهي الاشياء التي يجب فعلها لحماية موقعي؟؟
مجلد public_html في الاستضافة
التحذير من وضع ملف .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 فهو خطأ خطير وقد يؤدي لتسريب بيانات حساسة بدون أن تشعر.
التعليقات