أخطر ثغرات Laravel اللي بتقع فيها بدون ما تحس

x32x01
  • بواسطة x32x01 ||
🛑 تحذير مهم قبل ما نبدأ من فضلك 🙏 أي ثغرة هتتعلمها هنا استخدمها في الحماية بس
مش علشان تخرب موقع أو تأذي حد 👌🧡
البوست ده توعوي، هدفه يحميك كمبرمج 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$'
]);
المشكلة مش بس Users فيك ❌ المشكلة إن:
  • كل 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
  • تولد اسم جديد
  • تفصل التخزين عن الاسم الأصلي
مقال مهم جدًا: https://www.onsecurity.io/blog/file-upload-checklist/


🔥 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'
]);
ولو مش محتاج SVG اقفلها خالص 👍


📌 اسمح بالملفات… متمنعش​

أكبر غلطة: إنك تمنع امتدادات بعينها ❌
الصحيح: اسمح بامتدادات محددة فقط
✅ مثال صح
PHP:
$request->validate([
  'file' => 'required|mimes:zip,pdf|max:2000'
]);
أغلب المواقع المخترقة اللي بشوفها جاية من سكريبتات جاهزة من: https://codecanyon.net/


⚠️ خطر XSS مع {!! !!}​

لو استخدمت {!! $var !!} مرة واحدة بس والهاكر شافها أنت كده فتحتله الباب 🚪
XSS هنا خطير جدًا وبيحصل وانت مش واخد بالك.
✅ الصح {{ $var }} ولو مش فاهم XSS كويس ابعد عن {!! !!} خالص.


💉 SQL Injection مع Query Builder​

استخدام whereRaw مع input من المستخدم يعني اختراق مباشر.
❌ خطر
SQL:
DB::table('posts')
 ->whereRaw('id='.$id)
 ->first();
دي من أخطر ثغرات OWASP Top 10 🔥

✅ الصح
استخدم ORM: \App\Models\Post::where('id', $id)->first();


🐞 APP_DEBUG = فضيحة أمنية​

ترك APP_DEBUG=true في production بيكشف:
  • Paths
  • Repo
  • Commits
  • أسرار الكود
والمصيبة إنها موجودة حتى في Laravel 9 😬

✅ الحل
اقفله فورًا في production.


✅ الخلاصة المهمة​

لو استفدت بمعلومة واحدة بس فالبوست نجح 🧡
Laravel قوي بس أي إهمال بسيط يحوّله لكابوس أمني 👀
الأمان مش نقص معرفة أغلب الوقت نقص تركيز أو استعجال.
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
295
x32x01
x32x01
x32x01
الردود
0
المشاهدات
779
x32x01
x32x01
A
الردود
0
المشاهدات
109
Abo Ali
A
x32x01
الردود
0
المشاهدات
738
x32x01
x32x01
x32x01
الردود
0
المشاهدات
165
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,241
المشاركات
2,452
أعضاء أكتب كود
542
أخر عضو
ِأحمد م.
عودة
أعلى