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

السؤال

نشر (معدل)

يقوم رمز CSRF token في Django باغلاق ثغرة CSRF عن طريق إضافة حقل مخفي إلى جميع الطلبات التي تتطلب المصادقة. يحتوي هذا الحقل على رمز عشوائي يولده Django. عند إرسال الطلب، يقوم المتصفح بإضافة هذا الرمز إلى الطلب أيضًا عند وصول الطلب إلى الخادم، يقوم Django بالتحقق من رمز CSRF. إذا كان الرمز صحيحًا، فسيتم قبول الطلب. إذا كان الرمز غير صحيح، فسيتم رفض الطلب.

سؤالي هو كيف يقوم دجانجو بالتحقق من الرمز من طرف الخادم وهو مجرد اطار عمل  وهل يمكن للمبرمج اعطاء اوامر معينة للخادم ؟؟

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

يتم التحقق من رمز CSRF بشكل ضمني أثناء معالجة الطلب على الخادم، والعملية تحدث تلقائيًا ولا تتطلب تدخلك إلا إذا قررت تعطيل التحقق من رمز CSRF.

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

وإن لم يكن هناك تطابق بين القيمتين، سيتم رفض الطلب ويتم إثارة استثناء CSRFTokenError، وهناك استثناءات في بعض الحالات، مثل عدم وجود جلسة متصلة، ولكن عمومًا، التحقق الرمز CSRF جزءًا أساسيًا من إجراءات الأمان في Django.

وتستطيع أيضًا التحكم في كيفية تنفيذ التحقق من رمز CSRF في Django من خلال تكوين إعدادات CSRF_USE_SESSIONS و CSRF_COOKIE_SECURE و CSRF_COOKIE_AGE وغيرها في ملف settings.py.

ومتاح لك إعطاء أوامر معينة للخادم باستخدام middleware، مثلاً لإضافة حقل جديد إلى كل طلب أو لإعادة توجيه كل طلب إلى عنوان URL مختلف، كالتالي:

from django.middleware.csrf import CsrfViewMiddleware

class MyAppMiddleware(CsrfViewMiddleware):

    def process_request(self, request):
        # Do something before the request is processed

        return super().process_request(request)

    def process_response(self, request, response):
        # Do something after the request is processed

        return super().process_response(request, response)

و يقوم middleware بإضافة حقل CSRF token إلى كل طلب يتطلب المصادقة. يقوم الوسيط أيضًا بإجراء بعض الإجراءات الأخرى قبل وبعد معالجة الطلب.

  • 0
نشر

يقوم Django بالتحقق من رمز CSRF من خلال Middleware يدعى CsrfViewMiddleware. هذا الوسيط يقوم بإضافة حقل CSRFToken إلى جميع الطلبات التي تتطلب المصادقة. يحتوي هذا الحقل على رمز عشوائي يولده Django.

عند وصول الطلب إلى الخادم، يقوم Django أولاً

  • بتحقق من عنوان URL للطلب. إذا كان عنوان URL غير مدرج في قائمة الاستثناءات، فسيتحقق Django من رمز CSRF.
  • يقوم Django بالتحقق من رمز CSRF عن طريق مقارنة الرمز الموجود في الطلب بالرمز الموجود في ملف تعريف المستخدم. إذا كان الرمزان متطابقين، فسيتم قبول الطلب. إذا كان الرمزان غير متطابقين، فسيتم رفض الطلب.

بالنسبة لسؤالك الثاني، نعم، يمكن للمبرمج إعطاء أوامر معينة للخادم باستخدام إطار عمل Django. يمكن للمبرمج القيام بذلك عن طريق استخدام Middleware أو Decorators أو Views.

على سبيل المثال، يمكن للمبرمج استخدام Middleware لإضافة ميزات أمنية إضافية إلى التطبيق. يمكن للمبرمج استخدام Decorators لإضافة سلوك معين إلى Views.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...