أخطر ثغرات 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
المشاهدات
402
x32x01
x32x01
x32x01
الردود
0
المشاهدات
879
x32x01
x32x01
x32x01
الردود
0
المشاهدات
669
x32x01
x32x01
x32x01
الردود
0
المشاهدات
481
x32x01
x32x01
x32x01
الردود
0
المشاهدات
969
x32x01
x32x01
الوسوم : الوسوم
app debug file upload security laravel security owasp top 10 rate limiting recaptcha sql injection xss ثغرات laravel حماية تطبيقات الويب
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,356
المشاركات
2,569
أعضاء أكتب كود
569
أخر عضو
bahik
عودة
أعلى