هل CakePHP هو الحل؟
مما جعلني أبحث عن أساليب أفضل للبرمجة بإستخدام لغة الـ PHP، لفت إنتباهي أحد إطارات العمل وهو CakePHP إذ هو إطار عمل مفتوح المصدر لتطوير للمواقع الإلكترونية (Web Application Framework) بإستخدام لغة الـ PHP.
- مفتوح المصدر، تحت رخصة MIT.
- متوافق مع PHP 4 و5.
- إستخدام تركيبة الـ Model-view-controller وهي بإختصار تهدف إلى فصل المركبات الثلاث للبرامج (العرض، والتحكم، والبيانات)، للمزيد من المعلومات.
- العمليات الأساسية لتخاطب مع قواعد البيانات (CRUD) مبنية على شكل كائنات (ORM).
- Scaffolding وهو تركيبة جاهزة لعمل موقع من خلال قاعدة بيانات، فبمجرد عمل قواعد البيانات يكمن عمل موقع متكامل – من حيث التعامل من القواعد بيانات (CRUD) – (هذا ليس بغريب لمبرمجي Ruby on Rails).
- العناوين في CakePHP يمكل تخصيصها حسب رغبتك، وفي الأساس يكون كالآتي http://www.mysite.com/shop/buy/item3 سيقوم البرنامج الخاص بالتوجيه (Router) بمناداة الدالة buy() الموجودة في صنف (class) ShopController، وإعطاء الدالة buy(item3).
- قلة الإعدادات التي يجب عملها على خادم الويب Apache Web Server.
- وجود فريق عمل جيد لتعديل الأخطاء وتطوير CakePHP، ولدعم.
- أيضاً دعم لكثير من الإحتياجات للمبرمج مثل تسهلات للـ Ajax، وHTML، وForms، هذا وأيضاً توفر العديد من الأمور فيما يتعلق بالحماية.
الثغرات الشائعة في PHP
يشكك البعض في نمط الحماية الذي يحيط بمترجم PHP, والحقيقة فإن نمط الحماية الذي يحيط بمترجم PHP لا يقل كفاءة عن عن مترجم Microsoft ممثلا في حزمة IIS , فكما نعلم إن PHP لغة مفتوحة المصدر يساهم في تطويرها مجموعة عمل كبيرة من كل النواحي ومع هذا يظل هنالك مجموعة من الثغرات التي لا يمكن أن نصفها بأنها تكونت نتيجة خطأ داخلي بالمترجم بل هي نتيجة قصور برمجي يتسبب فيه المبرمج.
تحتل المتغيرات variables مساحة شاسعة من أرضية الأخطاء البرمجية الشائعة , وخصوصا عندما تكون ميزة الـ Register Global متاحة , وهي ميزة لا غنى عنها , ويكثر استخدامها في مختلف التطبيقات العالمية وفكرتها هي ارسال متغيرات من صفحة لأخرى عبر URL مثلا: www.example.com/index.php?id=1.
ويتضح الخطر عندما نقوم بارسال بيانات سرية مثل كلمة المرور أو معلومات الاتصال بقواعد البيانات أو ما شابه التي كانت بالأحرى أن ترسل عن طريق الـ Post مثلا واحيانا اخرى يقوم المستخدم المتطفل بتغيير قيمة متغير معين من خلال الـ URL.
ثغرة أخرى شائعة بالPHP وهي File Include , وتظهر عندما يلجأ المبرمج إلى استخدام متغير معين ليقوم باختزان اسم الملف المطلوب للقيام بعملية Include أو تضمين للملف وتزيد خطورة عندما يقوم المستخدم بتضمين اسم الملف على متغير عام يظهر في URL وبالتالي يتمكن المستخدم العادي من تغيير مسار الملف إلى مسار ملف داخلي مثلا يحتوي على معلومات حساسة مثل كلمات المرور وغيرها ..

