سجل الزوار Secure هو تطبيق ويب ، مكتوب في PHP. يتم تنفيذ استمرار البيانات مع MySQL.
تمت كتابة هذا العرض التوضيحي لإظهار نهجي في الموقف "لم يكن لديك شيء سوى PHP و MySQL. تحتاج إلى كتابة تطبيق آمن. أظهر ما تستطيع".
قد يكون هذا أيضًا تحديًا لك: نشر هذا التطبيق ، وتعذيبه ، واخترقه ، وأثبت أن هناك عيوب على مستوى التطبيق. أنا متأكد بنسبة 95 ٪. أرني أنا مخطئ.
هذا التطبيق لا يتعلق بإعادة اختراع العجلة. نعم ، هناك العديد من أطر عمل OpenSource و Libs الجيدة.
هذا يتعلق بالتحدي المتمثل في فهم الطبيعة الداخلية للأطر التي نستخدمها كل يوم ، وكيف تؤثر على أمن التطبيقات التي ننشئها.
تتمثل المهمة في كتابة تطبيق تجريبي في PHP Pure مع عدم وجود libs من طرف ثالث.
التطبيق هو دفتر زوار مع OPTS التالية: اشتراك المستخدم ، تسجيل الدخول والتسجيل ، الرسائل إنشاء ، تحرير ، حذف ، إضافة الرد.
تتمثل المهمة في كتابة تطبيق تجريبي في PUP PHP مع عدم وجود libs من طرف ثالث لإثبات أن التصميم الصحيح هو أفضل طريقة لإنشاء تطبيقات آمنة.
على الرغم من التسخين الواضح لكتابة تطبيق بسيط بطريقة مبكرة ، هناك عيب أكثر وضوحًا في هذا النهج: يمكنك السيطرة على التطبيق وتغرق في حدود تلك البساطة المنفذة.
لذا ، نعم ، من المفيد كتابة إطار عمل MVC بسيط ولكنه وظيفي ، بدلاً من كتابة 10 نصوص PHP غير القابلة للتمديد ، مختلطة مع HTML.
تم كتابة بيئة تشبه MVC من الصفر من الصفر لهذا العرض التوضيحي. واجهة في HTML النقي غير المليء بالتبادل.
تتم جميع المعالجة حول دورة حياة كائن الطلب الذي يتم تحوره أثناء التسلسل التالي:
نظرًا لأن التحدي كان في المقام الأول حول كتابة تطبيق ، بقدر ما هو ممكن ، فإن القائمة التالية من mesaurs المأخوذة لفرض التطبيق:
للحد من عدد محاولات الانقطاع التي يعتبرها Fail2Ban المحلية.
الميزات الرئيسية هي:
حظر عتبات للأخطاء والطلبات الكميات قابلة للتكوين.
كمية أساسية للغاية من الاختبارات المقدمة للأنظمة الفرعية العمود الفقري.
المتطلبات الأساسية: PHP 7 (PDO_MYSQL ، OpenSSL) ، الملحن (ل phpunit فقط) ، خادم HTTP
WEBAPP_BASEDIR - should point to src/ folder
WEBAPP_STORAGE_MYSQL_HOST
WEBAPP_STORAGE_MYSQL_USER
WEBAPP_STORAGE_MYSQL_PASSWORD
WEBAPP_STORAGE_MYSQL_DB
src/public مع Index.PhP phpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan و getRequestsTillBan إذا لزم الأمر