أفضل ممارسات Django: الحماية

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

و مثل معظم أطر الويب ، يقوم Django بتعيين افتراضيًا الإعدادات خاصة بالتطوير على السيرفرات المحلية عند إنشاء مشروع جديد.

و هنا يقع على عاتق المطور مسؤولية إدارة كل من الإعدادات الافتراضية المحلية وإعدادات الإنتاج المخصصة بشكل فعال.

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

في هذاالدرس سنتكلم عن أفضل ممارسات لحماية Django.

تحديث Django

التوصية الأمنية الأولى هي أن تكون دائمًا على أحدث إصدار من Django.

يصدر Django إصدارًا رئيسيًا جديدًا كل 9 أشهر أو نحو ذلك (2.2 ، 3.0 ، 3.1 ، إلخ) وإصدار ثانوي مع إصلاحات أمنية / أخطاء شهرية تقريبًا (3.1.1 ، 3.1.2 ، إلخ). و بالتالي خذ الوقت الكافي للتحديث بانتظام إلى أحدث إصدار.

يوجد دليل رسمي في الوثائق حول الترقية إلى إصدار أحدث.

DEBUG

في أعلى أي ملف  settings.py  يوجد إعداد DEBUG و بشكل افتراضي يتم تعيينه على True حتى يقوم بإنشاء صفحة خطأ غنية ومفصلة تتضمن الكثير من البيانات الوصفية بما في ذلك جميع إعدادات Django المحددة حاليًا.

هذه الميزة عبارة عن خارطة طريق لتصحيح الأخطاء محليًا، ولكنها أيضًا دليل لأي متسلل يريد اختراق موقع الويب الخاص بك.

لذلك تأكد من ضبط DEBUG على False عند إطلاق موقعك على الأنترنيت.

SECRET_KEY

SECRET_KEY عبارة عن سلسلة يتم إنشاؤها عشوائيًا وتستخدم للتوقيع المشفر عند تشغيل أمر startproject . و من المهم جدًا أن يتم الاحتفاظ بسرية SECRET_KEY.

أمر واحد هو Git commit وسيكون SECRET_KEY مرئيًا لأي شخص لديه حق الوصول إلى شفرة المصدر الخاصة بك.

ALLOWED_HOSTS

يقوم الإعداد ALLOWED_HOSTS بإختيار أسماء المجالات الذي يمكن لموقع Django خدمته و بشكل افتراضي يتم تعيينه على قائمة فارغة [].

و طبعا يجب تغيير هذا في مرحلة الإنتاج لتجنب هجمات رأس HTTP.

HTTPS/SSL

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

هناك الكثير من الإعدادات يمكنك تفعيلها لتمكين دعم SSL الكامل في مشروع Django.

يقوم SECURE_SSL_REDIRECT بإعادة توجيه الطلبات تلقائيًا عبر HTTP إلى HTTPS. و لذلك يجب أن يتم ضبطه على الشكل الصحيح.

HTTP Strict Transport Security (HSTS) هي سياسة أمنية تسمح للخادم بفرض أن متصفحات الويب يجب أن تتفاعل فقط عبر HTTPS عن طريق إضافة رأس Strict-Transport-Security.

و هناك ثلاثة إعدادات HSTS ضمنية في ملف settings.py تحتاج جميعها إلى تحديث عند مرحلة الإنتاج:

يتم تعيين إعداد  SECURE_HSTS_SECONDS  على 0 افتراضيًا ولكن كلما كان أكثر كان ذلك أفضل.

أما بخصوص  SECURE_HSTS_INCLUDE_SUBDOMAINS الخاص بالنطاقات الفرعية فيجب تعيينها على True في مرحلة إطلاق الموقع على الأنترنيت.

ملفات الوسائط

ستحتوي معظم مواقع Django على ملفات ثابتة ولا تتغير مثل CSS و JavaScript والصور وما إلى ذلك. وعادة ما يتم الإشارة إليها بإسم ملفات  Static  .

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

بشكل عام، لا يمكنك الوثوق بمستخدميك. خاصة عندما يكون لديهم القدرة على تحميل شيء ما على موقع الويب الخاص بك لذلك، بالنسبة لمواقع الويب التي تحتوي على ملفات وسائط، فإن استضافة كل المحتوى الثابت على خدمة سحابية أو CDN ، مثل Amazon S3 ، أمر ضروري.

تعد حزمة django-storages طريقة شائعة لتهيئةموقع الويب الخاص بك وتخفيف مخاوف أمان الوسائط.

إدارة Admin Django

يعد تطبيق إدارة Django ميزة مدمجة و قوية ومع ذلك و نظرًا لأن كل مشروع من مشاريع Django يحتوي على مجلد الإدارة تحت رابط  /admin  افتراضيًا ، فمن السهل على المتسلل محاولة شق طريقه إلى أي موقع ويب Django على عنوان URL هذا.

طريقة سهلة لتأمين تطبيق إدارة Django هي و ببساطة تغيير عنوان URL الخاص ب admin. كما في المثال التالي :

# config/urls.py
urlpatterns = [
    path('anything-but-admin/', admin.site.urls), 

DJ Checkup

يمكنك إجراء فحص أمني آلي على موقع Django الخاص بك عن طريق زيارة موقع DJ Checkup.

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


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading