
Secure Coding Dojo هي منصة لتقديم المعرفة بالبرمجة الآمنة.
Secure Coding Dojo هي منصة لتقديم التدريب على البرمجة الآمنة. على الرغم من أنها تأتي مع تطبيق تدريب ضعيف خاص بها (موقع Insecure.Inc)، إلا أنه يمكن استخدام بوابة التدريب بالاقتران مع تطبيقات تدريب أخرى. تكمن قوة المنصة في قابلية توسعها وتكاملها مع منصة التعاون التطويري الشائعة Slack. يمكن إعداد بوابة التدريب بسهولة في السحابة، وتتوفر أدناه تعليمات لإعداد AWS Elastic Beanstalk.
تأكد أيضًا من مراجعة الويكي لمزيد من التفاصيل حول نشر وتثبيت Dojo.
قم بتنزيل العرض التوضيحي للتعرف على بوابة التدريب وتطبيق Insecure.Inc.
ألقِ نظرة أيضًا على /screenshots

الخطوات التالية ستمنحك الإعداد الأساسي لـ Dojo. للإعداد المتقدم والتكاملات، راجع الويكي
ثبّت أحدث إصدار من Docker.
استنسخ المستودع باستخدام Git clone
غيّر الدليل إلى المجلد الجذر للمستودع
عيّن متغير البيئة DATA_DIR كنقطة تثبيت لملفات Dojo. على أنظمة *nix/نظام Mac، عدّل .bash_profile كالتالي
export DATA_DIR="/YOUR_DATA_DIR"
على Mac، يجب أن تسمح لـ Docker بالوصول إلى هذا الدليل من خلال Docker > Preferences > File Sharing
أعد تشغيل الطرفية
شغّل باستخدام
docker-compose up
على الرغم من أن مواقع التدريب مفتوحة المصدر لتعليم مفاهيم أمان التطبيقات ليست جديدة، إلا أن الجمهور المستهدف لهذه المواقع كان المختبرين الاختراقيين والقراصنة الأخلاقيين. تم تصميم Secure Coding Dojo بشكل أساسي كمنصة توصيل للمطورين، وإليك السبب:
على الرغم من أننا لا نضمن الامتثال، إلا أن التدريب يمكن استخدامه لتلبية متطلبات الامتثال مثل PCI 6.5.a. راجع مستند منهج Insecure.Inc الخاص بالتخطيط إلى SANS 25 / OWASP Top 10 / PCI 6.5
بوابة التدريب
Insecure.Inc
بوابة التدريب
Insecure.inc
بوابة التدريب
Insecure.Inc
اطلع على الويكي.
مزيد من المعلومات في الويكي.
ستحتاج إلى إنشاء تطبيق Slack للمصادقة.
يمكن أيضًا تكوين مصادقة Google في ملف config.json. ستحتاج إلى حساب مطور Google والحصول على بيانات اعتماد OAuth من وحدة تحكم Google API: https://console.developers.google.com
في نفس المكان، ستقوم بإعداد نطاقك وعناوين إعادة التوجيه المصرح بها. على سبيل المثال، للإعداد المحلي سيكون عنوان إعادة التوجيه: http://localhost:8081/public/google/callback
بالنسبة للفرق الصغيرة أو الصور المكوّنة مسبقًا، قد لا تكون مصادقة Slack أو Google خيارًا متاحًا. في هذا السيناريو، يمكنك تكوين مصادقة تعمل مع ملف مسطح محلي.
راجع الويكي لمزيد من المعلومات.
إذا لم تقم بتكوين قاعدة بيانات، فستستخدم بوابة التدريب قاعدة بيانات SQLite محلية فقط
يمكنك أيضًا تثبيت MySQL وإنشاء قاعدة بيانات وبيانات اعتماد لها. دوّن اسم المستخدم وكلمة المرور، ستحتاج إليهما لاحقًا.
سيتعين عليك إعداد مفاتيح التشفير كمتغيرات بيئة لنظام التشغيل. على أنظمة *nix/نظام Mac، عدّل .bash_profile كالتالي
export ENC_KEY="put something random here"
export ENC_KEY_IV="put something random here"
ما يلي هو لمنع المشاركين من توليد رموز التحدي الخاصة بهم.
export CHALLENGE_MASTER_SALT="put something random here"
يمكنك إضافة دروس جديدة باتباع نموذج الدروس الموجودة.
تُعرَّف التحديات في ./trainingportal/static/lessons يشير ملف definitions.json إلى وصف تحدي html المقابل ورابط التشغيل وكتل البرمجة المقابلة حسب معرف كتلة البرمجة. اتبع الأمثلة المعرفة مسبقًا لإنشاء تحدٍ جديد.
.
+-- /trainingportal/static/lessons
| +-- modules.json //configuration file where lesson modules are defined
| +-- /attack-grams //visual representations of attacks included in challenge descriptions
| +-- /blackBelt //lesson module
| +--definitions.json //individual lesson definitions
| +--cwe494.md // html or markdown file including the lesson description
| +--cwe494.sol.md //solution for the lesson
| ....
| +--quiz.html
| +-- /secondDegreeBlackBelt
تُعرَّف كتل البرمجة في ./trainingportal/static/codeBlocks. يحتوي هذا المجلد على بنية مشابهة مع ملف تعريف json ومجموعة من ملفات html لكل تحدٍ.
.
+-- /trainingportal/static/codeBlocks
| +-- codeBlocksDefinitions.json //configuration file where code blocks are defined
| +-- authenticationByDefault.html //code block description html
| ...
| +-- useStrongDataEncryption.html