مطلوب مبرمج بايثون لتعديل دالات التحقق وإغلاق ثغرات في بوت أتمتة متجر سلة

تفاصيل المشروع

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

لدي سيستم بوت أتمتة لمتجر ألعاب رقمية، السيستم مبني بلغة Python باستخدام إطار عمل (Flask أو FastAPI) ويعتمد على قاعدة بيانات SQLite (⁠xpblack.db⁠). البوت يقوم بتسليم حسابات الألعاب وإصدار أكواد التحقق (OTP) للعملاء بشكل أوتوماتيكي بناءً على أرقام الطلبات القادمة من منصة سلة (باقة سلة بلس).

أواجه حالياً مشكلة ثغرة أمنية في منطق الفحص (Logic Error) تتيح للعملاء التلاعب بالنظام وتجاوز حد المحاولات اليومي للـ OTP، وأحتاج مبرمجاً محترفاً لتعديل ملفات الـ Backend (تحديداً ملفات الدوال في ⁠app.py⁠ و ⁠database.py⁠) لإغلاقها فوراً.

🚨 وصف المشكلة والدورة الحالية (الثغرة):

النظام يحتوي على حد أقصى لطلب أكواد الـ OTP لكل لعبة في اليوم. السيناريو الذي يحدث فيه التلاعب هو كالتالي:

العميل يشتري (اللعبة أ) برقم طلب معين، ويشتري (اللعبة ب) برقم طلب آخر مستقل (أو حتى يشتري سلة مشتركة تحتوي على عدة ألعاب وتصدر برقم طلب واحد). عندما تنفد محاولاته اليومية لطلب كود OTP في صفحة (اللعبة أ)، يقوم العميل بالدخول إلى صفحة نفس اللعبة (اللعبة أ) ويمسح رقم طلبها، ويضع مكانه رقم طلب (اللعبة ب) الصحيح والجديد.

بما أن دالة الـ OTP الحالية تفحص رقم الطلب (⁠order_id⁠) بشكل مجرد في قاعدة البيانات للتأكد من وجوده وصلاحيته فقط دون التدقيق في نوع المنتج، فإن السيستم يقبل الرقم ويقوم بإصدار كود OTP لـ (اللعبة أ) بناءً على رقم طلب (اللعبة ب)! وبذلك تستمر أرقام الطلبات في القبول بجميع الحسابات وتخترق حماية الـ Limit اليومي.

🛠️ التعديل البرمجي المطلوب فوراً:

تعديل دالة استقبال طلب الـ OTP في الـ API واستعلام الـ SQL الخاص بها، بحيث يتم فحص شرط مزدوج إلزامي يعتمد على جدول التعيينات:

يجب مطابقة رقم الطلب (⁠order_id⁠) المدخل مع كود اللعبة الحالية (⁠game_code_id⁠) المعروضة أمام العميل في الصفحة من خلال جدول التعيينات (⁠game_code_assignments⁠) في قاعدة البيانات.

آلية العمل المطلوبة:

1 عندما يستقبل الـ API رقم الطلب وكود اللعبة الحالية، يقوم بعمل استعلام يتحقق من وجود سطر يربط بين هذا الـ ⁠order_id⁠ والـ ⁠game_code_id⁠ المحدد.

2 إذا كان رقم الطلب صحيحاً ومربوطاً فعلياً بهذه اللعبة في جدول التعيينات، يتم قبول الطلب وتوليد كود الـ OTP بشكل طبيعي (سواء كان الطلب يحتوي على لعبة واحدة، أو عدة ألعاب مشتركة مدمجة في نفس رقم الطلب؛ حيث سيكون لكل لعبة سطر تعيين مستقل).

3 إذا تم التحقق أن رقم الطلب هذا يخص لعبة أخرى غير اللعبة الحالية المفتوحة أمام العميل، يتم رفض الطلب فوراً وإظهار رسالة خطأ (رقم الطلب هذا غير مخصص لهذه اللعبة)، وبذلك نضمن عدم تداخل أرقام الطلبات بين الألعاب المختلفة نهائياً.

حالة المشروع
مفتوح
تاريخ النشر
الميزانية
$25.00 - $50.00
مدة التنفيذ
3 أيام
المهارات

صاحب المشروع
محمد ا.
تاريخ التسجيل
معدل التوظيف
المشاريع المفتوحة 1
مشاريع قيد التنفيذ 0
التواصلات الجارية 8

تقدم للمشروع

العروض المقدمة

مرحبا أستاذ محمد، أنا حازم هاني سامي، مهندس برمجيات بخبرة قوية في Python وBackend Development باستخدام Flask وFastAPI. ما شاء الله، باين على حضرتك إنك فاهم المش...

مرحبا أستاذ محمد، مهندس برمجيات و مختص بالبيثون قرأت المشكلة لديك و أستطيع حلها، في الواقع المشكلة ليست في ال OTP نفسه، بل في منطق التحقق، حيث انه يتحقق فقط من ...

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

السلام عليكم، المشكلة واضحة: الدالة بتتحقق إن الـ order_id موجود وصالح، لكنها مش بتتأكد إنه مربوط باللعبة المفتوحة قدام العميل، فالعميل بيحط رقم طلب لعبة تانية ...

أهلا أخي محمد، بالامكان حل المشكلة في اسرع وقت واختبارها والتأكد من عدم حدوثها مره اخرى دون تغير طريقة كتابة الكود وباقل تعديلات ممكنة قمت بعمل الكثير من المواق...

اتشرفت بالعمل معاك اكتر من مرة اتمني ان نستمر في الانجازات حسابات الألعاب المؤتمتة (game_code_accounts و game_codes): اسم اللعبة: مسجل في جدول الألعاب (game_cod...

انا عندي خبرة في اغلاق ثغرات business logic واشتغلت على اكثر من نظام automation زي n8n واشتغلت في تطوير الباك اند وال security best practices في الكود وطورت met...

السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل المشكلة وفهمت الثغرة بشكل كامل. المشكلة ليست في التحقق من صحة رقم الطلب فقط، وإنما في منطق الربط بين الطلب وال...

قبولك لهذا العرض يعتبر اتفاقاً بينك وبين المستقل وسيبقى موقع مستقل وسيطاً بينكما حتى تسليم المشروع. لن تتمكن من تغيير العرض أو إلغائه لاحقًا لذلك تأكد من اختيارك للعرض المناسب باتّباع النصائح التالية:

  • راجع صفحة حساب المستقل الذي اخترته واطّلع على أعماله السابقة
  • إن كانت هناك تفاصيل غير مذكورة في المشروع، فتواصل مع المستقل وأخبره بها أولًا
  • بإمكانك أن تتواصل مع المستقل وتسأله عن أية أمور تحتاجها
  • احرص دائمًا على إبقاء التواصل مع المستقل داخل الموقع قدر الإمكان وذلك لضمان حقوقك
  • لا تتردد من التواصل معنا ان احتجت لأي مساعدة، نحن نحب مساعدتك!

المستقل غير متاح لاستلام مشاريع، يمكنك ارسال تنبيه له لقبول العرض وإعادة المحاولة بعد بضعة ساعات، أو اختيار عرضاً من مستقل آخر.