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

السؤال

نشر

في laravel استخدمت cursorPaginate و عندما استخدمت orderby(id) يسوي حق الصفحة القادمة encode حق المعلومات الي بيبدا فيها و جربت اسوي decode في احد المواقع و اظهر لي id حق الصف. هل يعتبر غير امن معرفة id ام يكون اعتمادا على نوع المشروع؟ 

Recommended Posts

  • 0
نشر

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

كشف ال ID في cursorPaginate لا يعتبر خطرًا أمنيا مباشرا خاصة حينما يكون لدينا تحكم صحيح بالصلاحيات (Authorization) لكنه يعتمد على نوع المشروع أيضا.

بخصوص الترميز في Laravel فهو لإخفاء تفاصيل التنفيذ وليس للأمان الحقيقي فالأمان الفعلي يأتي من التحقق من صلاحيات المستخدم قبل السماح له بالوصول للبيانات والمخاطر الرئيسية هي:

  • كشف حجم قاعدة البيانات للمنافسين
  • إمكانية تخمين IDs أخرى والوصول غير المصرح له إذا كانت الصلاحيات ضعيفة
  • الاعتماد الشديد على بنية قاعدة البيانات

لذا فالحل الأمثل هو استخدام UUIDs بدلا من IDs وتطبيق فحص صلاحيات صارم على كل عملية والاعتماد على الأمان الحقيقي وليس إخفاء المعلومات فقط.

  • 0
نشر

إن ال base64 هذا ليس تشفير آمن بل هو مجرد encoding عادي أي أنه أى حد يستطيع معرفة عمل decode له وإكتشاف البيانات .

أما الإجابة على سؤالك فهي تعتمد تماما على نوع المشروع وطبيعة البيانات.

فمثلا لو ال ID لديك متسلسل (auto-increment) وال routes لديك مفتوحة أو محمية بحماية ضعيفة فالمهاجم يستطيع عمل ID enumeration attack بسهولةوالتعرف على الصفحات وإكتشاف الثغرات أو التحكم في المشروع إذا لم يكن مؤمن بشكل كامل.

لذلك الأفضل إستخدام UUID هكذا مثلا :

$table->uuid('id')->primary();

فأغلب المشاريع الكبيرة حاليا تستخدم UUID + cursor pagination بدون أي قلق من الأمان.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...