اذهب إلى المحتوى

السؤال

نشر

رفعت موقع و الكل يقول ان .env يجب ان لا يوضع في public_html لان يمكن البحث عنه و الحصول على المعلومات. انا اتكلم عن مشروع بستخدام Laravel جربت ابحث عن طريق url و لم استطيع دخول .env  مثال (www.mywebsite.com/env) اذا كيف استطيع البحث عنه. و ماهي الاشياء التي يجب فعلها لحماية موقعي؟؟ و كيف اعرف ان موقعي محمي؟

Recommended Posts

  • 1
نشر

بسبب إعدادات الويب سيرفر سواء Apache أو Nginx فمعظم الاستضافات الحديثة تقوم  بوضع قواعد تمنع الوصول لأي ملف يبدأ بنقطة . والتي تسمى Dotfiles لأسباب أمنية بطبيعة الحال.

تفقد ملف .htaccess لديك على الخادم في حال تستخدم تستخدم Apache، ستجد كود يمنع الوصول للملفات الحساسة.

لكن بعض السيرفرات لا تكون مهيأة بشكل صحيح لمنع الوصول لتلك الملفات، لذا لا يجب أبدًا وضع أية ملفات حساسة في المجلد العام public_html

فالمخترقون لا يقومون بتجربة المواقع بأنفسهم، بل من خلال بوتات تقوم بمسح ملايين المواقع يوميًا، وتجربة روابط ثابتة مثل /.env، /config، /.git.

ولو استجاب الخادم حتى لو عن طريق الخطأ للحظة، سيقوم البوت بتحميل الملف وسرقة بيانات قاعدة البيانات ومفاتيح التشفير.

كذلك في ملف .env لا تنسى تعطيل وضع التطوير:

APP_ENV=production
APP_DEBUG=false

فلو أبقيت على APP_DEBUG=true وحدث أي خطأ في الموقع سيقوم لارافيل بإظهار صفحة خطأ تحتوي على كل المتغيرات في .env بما فيها كلمات المرور للزوار.

  • 1
نشر
بتاريخ On 9‏/12‏/2025 at 15:09 قال Zerious San:

ماذا عن ملفات compser و package هل وجودهم في public_html لا يضر؟ لان جربت احول الوصول لهم لكن لم يسمح لي. استخدمت استضافة hostinger و لم يحدث شيء. اين يجب ان اضع هذه الملفات؟ , لاني بحثت في الانترنت ولم اجد شيء. و هل يحق لي استخدامت ادوات التهكير لاجرب موقعي للتاكد من الامان ام هذا ممنوع؟ بسبب اني استخدم استضافة من hostinger و يمكن يبطء السيرفر .

وعليكم السلام ورحمة الله تعالى وبركاته،

ملفات composer.json, composer.lock, وpackage.json لا يجب أن تكون في public_html أبدا لأنها تكشف جميع المكتبات والإصدارات المستخدمة مما يسهل على المخترقين معرفة الثغرات الموجودة في مشروعك.

أما السبب الذي منعك من الوصول إليها هو أن Apache/Nginx قد يحظر بعض الملفات افتراضيا أو أن الإعدادات الأمنية في Hostinger تمنع الوصول المباشر لذا فالحل الصحيح هو جعل Document Root يشير لمجلد public فقط وليس للمجلد الرئيسي لل Laravel، بحيث تبقى جميع ملفات Composer خارج public_html.

أما بخصوص اختبار الاختراق، لا يجب استخدام أدوات تهكير قوية على استضافة مشتركة لأنها قد تؤثر على مواقع أخرى على نفس السيرفر وتخرق شروط الخدمة في Hostinger التي تمنع أي نشاط يهدد استقرار الشبكة يمكنك استخدم اختبارات خفيفة يدوية أو أدوات online scanners أو انشئ بيئة محلية (VM) لاختبار موقعك بحرية.

  • 0
نشر
بتاريخ 16 دقائق مضت قال Mustafa Suleiman:

بسبب إعدادات الويب سيرفر سواء Apache أو Nginx فمعظم الاستضافات الحديثة تقوم  بوضع قواعد تمنع الوصول لأي ملف يبدأ بنقطة . والتي تسمى Dotfiles لأسباب أمنية بطبيعة الحال.

تفقد ملف .htaccess لديك على الخادم في حال تستخدم تستخدم Apache، ستجد كود يمنع الوصول للملفات الحساسة.

لكن بعض السيرفرات لا تكون مهيأة بشكل صحيح لمنع الوصول لتلك الملفات، لذا لا يجب أبدًا وضع أية ملفات حساسة في المجلد العام public_html

فالمخترقون لا يقومون بتجربة المواقع بأنفسهم، بل من خلال بوتات تقوم بمسح ملايين المواقع يوميًا، وتجربة روابط ثابتة مثل /.env، /config، /.git.

ولو استجاب الخادم حتى لو عن طريق الخطأ للحظة، سيقوم البوت بتحميل الملف وسرقة بيانات قاعدة البيانات ومفاتيح التشفير.

كذلك في ملف .env لا تنسى تعطيل وضع التطوير:

APP_ENV=production
APP_DEBUG=false

فلو أبقيت على APP_DEBUG=true وحدث أي خطأ في الموقع سيقوم لارافيل بإظهار صفحة خطأ تحتوي على كل المتغيرات في .env بما فيها كلمات المرور للزوار.

ماذا عن ملفات compser و package هل وجودهم في public_html لا يضر؟ لان جربت احول الوصول لهم لكن لم يسمح لي. استخدمت استضافة hostinger و لم يحدث شيء. اين يجب ان اضع هذه الملفات؟ , لاني بحثت في الانترنت ولم اجد شيء. و هل يحق لي استخدامت ادوات التهكير لاجرب موقعي للتاكد من الامان ام هذا ممنوع؟ بسبب اني استخدم استضافة من hostinger و يمكن يبطء السيرفر .

  • 0
نشر

سأقسم الإجابة إلى ثلاث نقاط:
كيف يمكن الوصول إلى ملف .env؟
ما الذي يجب فعله لحماية الموقع؟
كيف تتأكد أن موقعك محمي؟

أولًا: لماذا يُحذَّر من وضع .env داخل public_html؟
في Laravel:

ملف .env يحتوي على:

  • بيانات قاعدة البيانات
  • مفاتيح التشفير
  • بيانات البريد
  • API Keys
  • لو أمكن الوصول إليه عبر المتصفح، فهذا اختراق كامل للموقع.

لكن:

عدم قدرتك على فتحه عبر الرابط لا يعني أنه آمن 100%.

ثانيًا: كيف يمكن الوصول إلى .env أصلًا؟
ليس عن طريق:

www.mywebsite.com/env

هذا غير صحيح.

المخاطر تكون في الحالات التالية:

إذا كان السيرفر يسمح بعرض الملفات النصية
بعض إعدادات السيرفر السيئة تسمح بتحميل أي ملف داخل public_html.

في حال وجود:

  • Misconfiguration في Apache أو Nginx
  • أو إعدادات خاطئة في .htaccess

ثغرات قديمة أو أخطاء مثل:

ترك Backup مثل:

  • .env.bak
  • .env.old
  • أو وجود Laravel Debug مفعّل في الإنتاج
  • في بعض الاستضافات القديمة:
  • www.mywebsite.com/.env
  • قد يُعرض مباشرة إن لم يكن محميًا.

ثالثًا: ما هو المكان الصحيح لملف .env؟
في Laravel الصحيح:

public_html يجب أن يحتوي فقط على محتويات مجلد public

ملف .env يكون خارج public_html

الهيكل الصحيح:

/home/user/ ├── project/ │ ├── app/ │ ├── bootstrap/ │ ├── config/ │ ├── .env │ └── public/ │ └── index.php

ويتم توجيه public_html إلى مجلد public فقط.

رابعًا: كيف تحمي موقع Laravel بشكل صحيح؟

تأكد أن public_html يشير إلى مجلد public فقط
ولا ترفع المشروع كاملًا داخله.

تأكد أن:

  • APP_DEBUG=false
  • في الإنتاج.

تأكد من وجود:

<Files ".env"> Order allow,deny Deny from all </Files>

في .htaccess (Apache).

لا ترفع:

  • .env إلى GitHub
  • ملفات Backup
  • ملفات قديمة
  • حدّث Laravel دائمًا.
  • تأكد من صلاحيات الملفات:
  • .env لا يكون قابلًا للقراءة العامة.

خامسًا: كيف تتأكد أن موقعك محمي؟

جرّب:

www.mywebsite.com/.env www.mywebsite.com/.env.bak www.mywebsite.com/.env.old

إذا:

ظهرت 403 أو 404 → جيد

ظهر محتوى الملف → خطر فوري

أيضًا:

جرّب خطأ متعمّد

إن ظهر Stack Trace مفصل → APP_DEBUG ما زال مفعّلًا

الخلاصة

عدم فتح .env من المتصفح لا يعني الأمان الكامل

المكان الصحيح لـ .env خارج public_html

حماية Laravel تعتمد على إعداد السيرفر أكثر من الكود

أي تسريب لـ .env = اختراق كامل

  • 0
نشر

نعم بالطبع حيث ملف env. هو الملف الخاص بمتغيرات البيئة الأساسية في مشروعك والتي تحوي بيانات حساسة جدا ومهمة مثل معلومات الإتصال بقواعد البيانات وبيانات البريد الخاص بك لإرسال الرسائل وغيرها من المعلومات الحساسة لمشروعك والتي يجب إخفائها وإذا حصل أحد ما على هذا الملف سيكون لديه الوصول إلى كل بيانات ومعلوماتك من قواعد البيانات إلى حساباتك وغيرها من البيانات المخزنة في الملف .

ولهذا لا يجب وضعه أبدا بداخل المجلد public_html لأن أى ملف بداخله يتم الوصول إليه من خلال الرابط URL وهكذا سيستطيع أى أحد الوصول إلى ملف env. إن كان بداخله وسيتم إختراق بياناتك .

بتاريخ On 9‏/12‏/2025 at 16:09 قال Zerious San:

ماذا عن ملفات compser و package هل وجودهم في public_html لا يضر؟ لان جربت احول الوصول لهم لكن لم يسمح لي. استخدمت استضافة hostinger و لم يحدث شيء. اين يجب ان اضع هذه الملفات؟ , لاني بحثت في الانترنت ولم اجد شيء. و هل يحق لي استخدامت ادوات التهكير لاجرب موقعي للتاكد من الامان ام هذا ممنوع؟ بسبب اني استخدم استضافة من hostinger و يمكن يبطء السيرفر .

أنت تستخدم laravel إذا يجب وضع فقط محتويات ملف public بداخل مجلد public_html وباقي الملفات الأخرى خارج المجلد ولكن بجواره .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...