ملف إعدادات Django – شرح خطوة بخطوة

0

 

بمجرد إنشاء مشروع Django ، فإنه يأتي بهيكل دليل محدد مسبقًا به الملفات التالية و كل ملف له استخداماته الخاصة.

لنأخذ مثالا :

1
2
3
4
5
6
// Create a Django Project "mysite"
django-admin startproject mysite
 
cd /pathTo/mysite
// Create a Django app "polls" inside project "mysite"
python manage.py startapp App_name

بعدها سيصبح هيكلة المشروع على الشكل التالي :

1
2
3
4
5
6
7
mysite            mysite                
            -> __init__.py
            -> asgi.py
            -> settings.py     urls.py
            -> wsgi.py
    --> manage.py
    --> polls

رؤى حول ملف settings.py

عند إنشاء مشروع Django جديد باستخدام الأمر django-admin startproject ، يتم إنشاء ملف settings.py افتراضي داخل دليل مشروعك، يحتوي هذا الملف على مجموعة من الإعدادات التي تم تكوينها مسبقًا والتي يمكنك استخدامها كنقطة بداية لتطبيقك

سنقوم بمناقشة النقاط المهمة و الإعدادات الافتراضية في ملف settings.py الخاص بـ Django.

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

BASE_DIR

يشير BASE_DIR إلى التسلسل الهرمي العلوي للمشروع وهو مفيد في إنشاء مسارات الملفات في جميع أنحاء التطبيق، ومهما كانت المسارات التي نحددها في المشروع ستكون كلها مرتبطة بـ BASE_DIR، و لاستخدام BASE_DIR سيتعين علينا استخدام وحدة نظام التشغيل os المقدمة من Python.

1
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DEBUG

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

1
DEBUG = True  // It is Default value and is preferred in only Development Phase.

عند إطلاق الموقع على الأنترنيت، يجب تبديل قيمة DEBUG = False.

ALLOWED_HOSTS

ALLOWED_HOSTS هي قائمة تحتوي على عناوين لجميع المجالات التي يمكنها تشغيل مشروع Django الخاص بك، و بشكل افتراضي يكون المتغير ALLOWED_HOSTS في settings.py فارغًا

هذا إجراء أمني لمنع هجمات رأس HTTP Host حيث يتم إجراء التحقق لمنع المستخدمين المحتالين من إرسال رؤوس مضيف HTTP مزيفة يمكن أن تؤدي إلى إفساد ذاكرة التخزين المؤقت ورسائل البريد الإلكتروني لإعادة تعيين كلمة المرور مع روابط إلى مضيفين ضارين، والتي تكون ممكنة حتى في ظل العديد من تكوينات خادم الويب التي تبدو آمنة.

إذا قمت بتبديل قيمة DEBUG إلى False وتركت ALLOWED_HOSTS فارغًا ، سيرفض Django تقديم الطلبات وبدلاً من ذلك يستجيب بصفحات طلبات HTTP 400 سيئة ، لأنه لا يمكنه التحقق من صحة رؤوس HTTP Host الواردة.

1
2
3
4
When DEBUG set to True
ALLOWED_HOSTS can be an empty list i.e. ALLOWED_HOSTS=[ ] because by Default it is 127.0.0.1 or localhost
When DEBUG set to False
ALLOWED_HOSTS can not be an empty list. ALLOWED_HOSTS=[“127.0.0.1”, “*.site.com”].

INSTALLED_APPS

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

يستخدم Django INSTALLED_APPS كقائمة للبحث عن النماذج وأوامر الإدارة والاختبارات والأدوات المساعدة الأخرى.

1
2
3
4
  INSTALLED_APPS = [
        // Some preloaded apps by Django,
        'polls',
]

DATABASES

يدعم Django رسميًا قواعد البيانات التالية:

  • PostgreSQL
  • MariaDB
  • MySQL
  • Oracle
  • SQLite <– إفتراضيا

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

1
2
3
4
5
6
DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.sqlite3',
           'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
       }
   }

ROOT Variables

متغيرات الجذر هي مسارات مطلقة. تُستخدم هذه المتغيرات لاسترداد الملفات سواء كانت وسائط أو ثابتة.

MEDIA_ROOT

MEDIA_ROOT هو مسار مطلق يستخدم هذا المتغير لاسترداد ملفات الوسائط.

1
MEDIA_ROOT= os.path.join(BASE_DIR, 'media')

STATIC_ROOT:

STATIC_ROOT هو مسار مطلق يستخدم هذا المتغير لاسترداد الملفات الثابتة.

1
STATIC_ROOT= os.path.join(BASE_DIR, 'static')

ملاحظة: جميع أسماء المتغيرات في إعدادات Django مكتوبة بالأحرف الكبيرة.

SECRET_KEY

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

ملفات تعريف الارتباط في Django

TEMPLATES

يقوم هذا الإعداد بتكوين محركات القوالب والأدلة التي يستخدمها Django لعرض صفحات HTML في تطبيقك.

أفضل الممارسات لتنظيم إعدادات Django

يعد تنظيم إعدادات Django بشكل فعال أمرًا بالغ الأهمية لقابلية الصيانة والتوسع والأمان لتطبيقك. فيما يلي بعض أفضل الممارسات لتنظيم إعدادات Django:

استخدم بنية إعدادات معيارية :

بدلاً من الإعتماد على ملف settings.py واحد ، قم بإنشاء حزمة إعدادات بملفات منفصلة لبيئات مختلفة (على سبيل المثال ، التطوير ، التدريج ، الإنتاج) وملف base.py للإعدادات الشائعة. يعزز هذا النهج الفصل الواضح بين الاهتمامات ويجعل من السهل التبديل بين التكوينات المختلفة.

الاستفادة من متغيرات البيئة:

استخدم متغيرات البيئة لتخزين المعلومات الحساسة ، مثل المفاتيح السرية ومفاتيح API وبيانات اعتماد قاعدة البيانات، تعمل هذه الممارسة على إبقاء البيانات الحساسة خارج التعليمات البرمجية والتحكم في الإصدار، مما يؤدي إلى تحسين الأمان وتسهيل تكوين الإعدادات لبيئات مختلفة.

احتفظ بالملفات الحساسة خارج نطاق التحكم في الإصدار:

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

تنظيم الإعدادات بشكل منطقي :

قم بتجميع الإعدادات ذات الصلة معًا واستخدام التعليقات، هذا يجعل ملفات الإعدادات الخاصة بك أسهل للقراءة والصيانة.

استخدم أذونات الملفات المناسبة:

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

كيفية إنشاء تطبيق في Django؟

0

 تشتهر Django بهيكل التطبيق الفريد والمدار بالكامل، و يمكن إنشاء تطبيق كوحدة مستقلة تمامًا لكل مهام على حدى.

سنتكلم في هذه المقالة حول كيفية إنشاء تطبيق أساسي وإضافة وظائف باستخدام هذا التطبيق.

إيجابيات استخدام Django لتطوير ويب

0

 

يعد Django أحد أفضل الأطر لتطوير الويب ، ولكن لماذا يحظى بشعبية كبيرة بين المطورين وأصحاب الأعمال؟ دعونا نراجع أسباب تطوير العديد من التطبيقات والميزات مع Django والإجابة على السؤال هل Django كافٍ لتطوير الويب؟

مراجعة معماريات الشبكة

0

 

معماريات الشبكة
نحن نعيش في فترة مثيرة و مليئة بالتحديات حيث يتطلب نظامنا البيئي القائم على الإنترنت أن تكون شبكات الأعمال متاحة بنسبة 100 في المائة تقريبًا من الوقت، كما يجب أن تكون شبكات المؤسسات قادرة على التكيف مع متطلبات حركة المرور المتغيرة والحفاظ على أوقات استجابة ثابتة، بالإضافة إلى ذلك ، يجب أن يكونوا مستعدين بما يكفي للاستجابة للحوادث الأمنية غير المتوقعة.

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


أفضل مكتبات بايثون لتوفير الوقت

0

 

أفضل مكتبات بايثون لتوفير الوقت

يعد تعلم الألة وتطوير البرامج جزءًا كبيرًا من جميع المشاريع مفتوحة المصدر التي تم إنشاؤها باستخدام بايثون، في السنوات الأخيرة أدت هذه المشاريع إلى خلق العديد من فرص العمل في مجال تطوير المصادر المفتوحة، و أشهر المشاريع مفتوحة المصدر المكتوبة بلغة بايثون هي TensorFlow و Keras و Scikit-Learn و Flask و Django و Tornado و Pandas و Kivy و Matplotlib و Orders.

1.TensorFlow

مكتبة برمجية مجانية ومفتوحة المصدر في مجال تعلم الآلة. تستخدم في العديد من المجالات الفرعية ولكن لها تركيز محدد في تدريب واستدلال الشبكات العصبية العميقة.

تم تطوير المكتبة بواسطة Google لتلبية الحاجة إلى الأنظمة التي يمكنها إنشاء وتدريب الشبكات العصبية لاكتشاف وفك تشفير الصور والارتباطات  على غرار التعاليم والتمثيلات التي يستخدمها البشر.

  1. Keras

 مكتبة شبكة عصبية مفتوحة المصدر مكتوبة بلغة بايثون وقادرة على العمل على برامج مثل Deep Learning و TensorFlow و Theano، تم إنشاؤها في الأصل لإجراء تجارب على الشبكات العصبية العميقة و ينصب تركيز Keras على النمطية وقابلية الاستخدام وقابلية التوسع.

3.Scikit-learn

هي مكتبة توفر خوارزميات مختلفة للتعلم الخاضع للإشراف وغير الخاضع للإشراف من خلال واجهة للغة برمجة بايثون، يتم توزيع هذه المكتبة بموجب "ترخيص BSD ولها توزيعات للعديد من إصدارات Linux المختلفة وبالتالي تعزيز الاستخدام التجاري والأكاديمي لـ Scikit-Learn

أفضل مكتبات لغة البرمجة بايثون لتصور البيانات

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

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

  1.  Matplotlib 

Matplotlib هي مكتبة بايثون الأكثر شيوعًا لتصور البيانات، يمكن استخدامه في شيل بايثون و IPython وخوادم تطبيقات الويب وما إلى ذلك، وتعتبر هذه المكتبة هذه مكتبة رسوم بيانية ثنائية الأبعاد عمرها أكثر من 10 سنوات وتأتي مع نظام أساسي تفاعلي.

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

يركز Metaplotilib على الصور الثابتة للنشر جنبًا إلى جنب مع الأشكال التفاعلية باستخدام مجموعات أدوات مثل Qt و GTK.

  1. Seaborn
تستند مكتبة تصور بيانات Seaborn أيضًا إلى Matplotlib. و إذا كنت تبحث عن خيارات أكثر تقدمًا لعملك  فجرب هذه الممكتبة.
تأتي هذه المكتبة بواجهة كاملة الميزات لرسم رسومات إحصائية جذابة وغنية بالمعلومات و تعد واجهة برمجة تطبيقات التصور المبنية على KDE أكثر إيجازًا من المكتبات المماثلة الأخرى.
يعمل Seaborn بجد لجعل التصور جزءًا أساسيًا من فهم البيانات واستكشافها، تم دمج Seaborn تمامًا مع PyData stack بما في ذلك دعم هياكل بيانات NumPy و pandas.

3. Altair 

مكتبة إحصائية توضيحية مبنية على قواعد التصور النحوية المشهورة Vega-Lite. Altair، وتتميز بواجهة برمجة تطبيقات بسيطة.
باستخدام مكتبة تصور البيانات هذه يمكنك إنشاء تصورات جميلة وفعالة بأقل كود ممكن ما عليك سوى ذكر ارتباط واحد بين أعمدة البيانات إلى قنوات الترميز وسيتم التعامل مع الباقي تلقائيًا.

هجوم BITB (متصفح في متصفح)

0

 هجوم متصفح في متصفح BITB هو هجوم تصيد متقدم وأكثر تعقيدًا يمكن أن يخدع المستخدمين للاعتقاد بأن موقع الويب المزيف حقيقي و يعمل على جعل المستخدمين يعتقدون أن نافذة SSO الزائفة حقيقية.

 ولتوضيح الامر أكثر ربما قد شاهدت هذه النافذة عند محاولة تسجيل الدخول إلى موقع canva :


تسمح لك نافذة SSO الجديدة بالمصادقة مع google.

لمحة عن الدخول المُوحَّد (SSO)

يتيح الدخول المُوحَّد (SSO) للمستخدمين تسجيل الدخول مرة واحدة فقط للوصول إلى جميع تطبيقات السحابة الإلكترونية للمؤسسة. في حال إعداد الدخول المُوحَّد (SSO)، يمكن للمستخدمين تسجيل الدخول إلى موفِّر الهوية التابع لجهة خارجية، ثم الدخول إلى تطبيقات Google مباشرةً بدون الحاجة إلى تسجيل الدخول مرة ثانية.
 
يمكنك أن ترى أننا حصلنا على نافذة منبثقة جديدة من Google . إذا نظرنا إلى خصائص URL فهي محمية بطبقة المقابس الآمنة وبها HTTPS ، كما أنه لا يوجد هجوم متماثل لـ IDN و بالتالي فهو مناسب للإستخدام.
يمكن للمطور إنشاء نفس النافذة باستخدام علامة <ifram> في HTML وجعلها أكثر قابلية للتصديق كنافذة SSO مستقلة باستخدام  الصحيح ل CSS و JS و لكن في الحقيقة ستكون مجرد نافذة داخل نافذة وليست نافذة مستقلة !!
 

 كلاهما يبدوان متشابهين لهما نفس المجال وأيقونة قفل SSL  ونسخة كاملة.
 

كيف يتم تنفيذ هجوم BITB؟ 

من أجل الحصول على فكرة بسيطة عن كيفية عمل هجوم BITB يمكنك إلقاء نظرة على إطار عمل التالي :

 https://github.com/surya-dev-singh/BITB-framwork

قم باستنساخ المستودع على نظامك وستجد أنه يملك العديد من القوالب للعمل على المواقع الشعبية.


يمكنك تعديل و تغيير مواقع الويب عن طريق التعديل على main.html.


ستسمح لك نافذة SSO الوهمية بالتقاط عمليات تسجيل الدخول:


كيف تكتشف هجمات BITB؟

نظرًا لأن هذا الهجوم يعتمد على كود HTML فمن الصعب اكتشافه ومن الصعب إنشاء مؤشر الاختراق (IOC). إحدى الطرق الممكنة للكشف هي التحقق مما إذا كانت نافذة SSO المنبثقة قادرة على الهروب من المتصفح، لأنه إذا كان هجومًا من قبل BITB فسيستخدم علامة <iframe> والتي تشبه نافذة داخل النافذة لكنها لا تستطيع الخروج من المتصفح.