- بواسطة x32x01 ||
🛑 تحذير مهم قبل ما نبدأ من فضلك 🙏 أي ثغرة هتتعلمها هنا استخدمها في الحماية بس
مش علشان تخرب موقع أو تأذي حد 👌🧡
البوست ده توعوي، هدفه يحميك كمبرمج Laravel من أخطاء شفتها بعيني على مدار أكتر من 5 سنين شغل فعلي.
إن حد ينقل كل ملفات public للـ root folder علشان يشغّل الموقع بسرعة.
❌ غلط ❌ غلط ❌ وأكبر غلط
ليه؟ علشان كده أنت بتخلي كل ملفات المشروع Accessable.
يعني لو موقعك:
أي حد يقدر يدخل على:
التزم بالـ Docs الرسمية: https://laravel.com/docs/9.x/deployment
وظبط htaccess أو Nginx بحيث يبدأ من
أداة ممتازة تكشفلك الملفات الحساسة المكشوفة: https://github.com/maurosoria/dirsearch
أي حد يقدر يعمل Loop ويبعت آلاف الطلبات على /register.
مثال توضيحي 👇
المشكلة مش بس Users فيك ❌ المشكلة إن:
أي حد يقدر يعرف Email Provider بتاعك من DNS: https://tools.nafezly.com/dns-lookup
✅ الحل استخدم reCAPTCHA و Rate Limiting ومتستخدمش المعرفة دي في أذى 🙏
ممكن أرفع ملف ملغوم واسميه:
وهو مش صورة أصلاً 💥
✅ الحل افحص بالـ MimeType مش بالـ Extension
عن طريق أدوات زي BurpSuite المهاجم يغير اسم الملف أثناء الرفع لـ:
وأظن الرسالة وصلت 😶
✅ الصح
أي ملف PHP ملغوم يترفع
يتنفذ
وانتهى الموضوع.
✅ الصح التزم بتوصيات Laravel:
directories 775
files 664
يعني:
✅ الصح
ولو مش محتاج SVG اقفلها خالص 👍
الصحيح: اسمح بامتدادات محددة فقط
✅ مثال صح
أغلب المواقع المخترقة اللي بشوفها جاية من سكريبتات جاهزة من: https://codecanyon.net/
XSS هنا خطير جدًا وبيحصل وانت مش واخد بالك.
✅ الصح
❌ خطر
دي من أخطر ثغرات OWASP Top 10 🔥
✅ الصح
استخدم ORM:
✅ الحل
اقفله فورًا في production.
Laravel قوي بس أي إهمال بسيط يحوّله لكابوس أمني 👀
الأمان مش نقص معرفة أغلب الوقت نقص تركيز أو استعجال.
مش علشان تخرب موقع أو تأذي حد 👌🧡
البوست ده توعوي، هدفه يحميك كمبرمج Laravel من أخطاء شفتها بعيني على مدار أكتر من 5 سنين شغل فعلي.
🚨 خطأ قاتل: نقل محتويات Public للـ Root
من أكبر المصايب اللي بشوفها 👀إن حد ينقل كل ملفات public للـ root folder علشان يشغّل الموقع بسرعة.
❌ غلط ❌ غلط ❌ وأكبر غلط
ليه؟ علشان كده أنت بتخلي كل ملفات المشروع Accessable.
يعني لو موقعك:
example.comأي حد يقدر يدخل على:
example.com/.env😱example.com/storage/logs/laravel.log
- باسوردات
- مفاتيح API
- أخطاء السيستم
- أسرار المشروع كلها مكشوفة
التزم بالـ Docs الرسمية: https://laravel.com/docs/9.x/deployment
وظبط htaccess أو Nginx بحيث يبدأ من
index.php وهو في مكانه الطبيعي.أداة ممتازة تكشفلك الملفات الحساسة المكشوفة: https://github.com/maurosoria/dirsearch
🤖 كارثة التسجيل بدون reCAPTCHA
لو موقعك فيه Registration ومفيش reCAPTCHA يبقى أنت فاتح باب جهنم 😬أي حد يقدر يعمل Loop ويبعت آلاف الطلبات على /register.
مثال توضيحي 👇
PHP:
\Http::post('http://example.com/register',[
'_token' => 'GENERATE_TOKEN',
'name' => uniqid(),
'email' => uniqid().'@gmail.com',
'password' => '123456789aA$',
'password_confirmation' => '123456789aA$'
]); - كل Register بيبعت Email
- كل Email له Limit
- ومع شوية Requests الإيميل يقف 💣
أي حد يقدر يعرف Email Provider بتاعك من DNS: https://tools.nafezly.com/dns-lookup
✅ الحل استخدم reCAPTCHA و Rate Limiting ومتستخدمش المعرفة دي في أذى 🙏
📁 فحص نوع الملف بالـ Extension = مصيبة
إنك تفحص الملف بـ الامتداد بس يعني بتضحك على نفسك 😅ممكن أرفع ملف ملغوم واسميه:
image.pngوهو مش صورة أصلاً 💥
✅ الحل افحص بالـ MimeType مش بالـ Extension
🧨 تخزين الملفات بنفس اسمها الأصلي
لو بتخزن الملفات باسمها الأصلي أو حتى معدل عليه شوية يبقى أنت بتزرع ثغرة بإيدك ✋عن طريق أدوات زي BurpSuite المهاجم يغير اسم الملف أثناء الرفع لـ:
../../.envوأظن الرسالة وصلت 😶
✅ الصح
- تشيل Special Characters
- تولد اسم جديد
- تفصل التخزين عن الاسم الأصلي
🔥 Storage Folder قابل للتنفيذ = اختراق مباشر
إنك تدي storage صلاحية 777 علشان الموقع يشتغل ده إعلان رسمي إنك عايز تتخترق 😬أي ملف PHP ملغوم يترفع
يتنفذ
وانتهى الموضوع.
✅ الصح التزم بتوصيات Laravel:
directories 775
files 664
🖼️ خطر ملفات SVG
ملفات SVG مش صور بريئة ❌ دي ممكن تحتوي JavaScript 😱يعني:
- سرقة Cookies
- اختراق حسابات
- XSS صريح
PHP:
$request->validate([
'file' => 'required|mimes:images/*'
]); ✅ الصح
PHP:
$request->validate([
'file' => 'required|mimes:jpg,jpeg,png|max:2000'
]); 📌 اسمح بالملفات… متمنعش
أكبر غلطة: إنك تمنع امتدادات بعينها ❌الصحيح: اسمح بامتدادات محددة فقط
✅ مثال صح
PHP:
$request->validate([
'file' => 'required|mimes:zip,pdf|max:2000'
]); ⚠️ خطر XSS مع {!! !!}
لو استخدمت{!! $var !!} مرة واحدة بس والهاكر شافها أنت كده فتحتله الباب 🚪XSS هنا خطير جدًا وبيحصل وانت مش واخد بالك.
✅ الصح
{{ $var }} ولو مش فاهم XSS كويس ابعد عن {!! !!} خالص.💉 SQL Injection مع Query Builder
استخدام whereRaw مع input من المستخدم يعني اختراق مباشر.❌ خطر
SQL:
DB::table('posts')
->whereRaw('id='.$id)
->first(); ✅ الصح
استخدم ORM:
\App\Models\Post::where('id', $id)->first();🐞 APP_DEBUG = فضيحة أمنية
ترك APP_DEBUG=true في production بيكشف:- Paths
- Repo
- Commits
- أسرار الكود
✅ الحل
اقفله فورًا في production.
✅ الخلاصة المهمة
لو استفدت بمعلومة واحدة بس فالبوست نجح 🧡Laravel قوي بس أي إهمال بسيط يحوّله لكابوس أمني 👀
الأمان مش نقص معرفة أغلب الوقت نقص تركيز أو استعجال.