تأمين php باستعمال php.ini

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

إخفاء معلومات نسخة php

شرحته وتطرقت له سابقا في أحد مواضعي “إخفاء معلومات نسخة apache و php” لكن نعيده مرة أخرى، كيف يمكن إزالة معلومات X-Powered-By

expose_php Off

open_basedir

هذا لصد الثغرات من نوع Directory traversal والذي يقوم على الوصول لمكان غير مسموح مثل ملف كلمات المرور في النظام أو فتح الملفات لتطبيقات أخرى موجودة على نفس النظام، لكن هذه الأخيرة فهي متزامن بتفعيل safe_mode

open_basedir = /var/www

بهذا لن يكون في استطاعة open-basedir الوصول وراء المجلد الذي وضعنا له

تعطيل الوظائف الخطيرة

بما أن المبرمج يعرف أن التطبيق عليه العمل فلا يحك رأسه جيدا لمعرفة هل صحيح استعمال نضام الأوامر لنضام أو الأوامر الخطيرة الموجودة في البرمجة، لذالك يوجب تعطيل كل الوظائف الخطيرة لحصر استعمال غير لائق له من طرف أخر

disable_functions ="system,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,pcntl_exec"

تعطيل ID session مع اسم الموقع url

http://www.domain.com/?PHPSESSID=27af1facda0a866a297d5055f2fade2c

أضن أن بعد المرات لم تدرك أن موقع وضع رقم session ID في اسمه فالخطورة ليس معرفتها من طرفك لأنها شخصية، بل أخذها وإستغلالها من شخص أخر

session.use_trans_sid = off

الأخطاء display_errors

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

display_errors = Off

register_globals

تعني راحة في البرمجة وثغرة بحجم الثقب الأسود في التطبيق،لكن لا يهم فهي من النسخة 4.2.0 تأتي غير مفعلة وإذا تم تفعيلها فذالك ليس جيد لأنه يمكن استعمال الأوامر من أماكن كثيرة EGPCS (Environment, Get, Post, Cookie, Server) للوصول إلى أماكن أخرى من التطبيق

register_globals = Off

تعطيل Remote File Includes

تقوم على جلب ثغرات من نوع RFI, والتي تشغل في الخادم وباستعمال برمجة في ملفات خارجية ويمكن إضافة قوة  لها لسيطرة على النظام عند استعمال الأوامر.

allow_url_fopen = Off
allow_url_include = Off

file_uploads

إذا كنت لا تستعمل رفع الملفات عبر http فمن المستحسن غلق الصنبور على الكل وفتح للحاجة

file_uploads = Off

magic_quotes_gpc و magic_quotes_runtime

لا أري هل هناك من لا يستعملها وإذا كانت ليست مفعلة فستأتي بثغرات sql Injection لأنه عند إرسال شيء ب ‘ أو ” فلن يقوم أتوماتكيا وضع \” لكي لا تستعمل أنها للبرمجة

magic_quotes_gpc = On
magic_quotes_runtime = On

safe_mode

لتحسين المشاكل التي تترطب عندما تكون الاستضافة مشتركة هو إمكانية الوصول لملفات في نفس الخادم في مجلد أخر،فعند تفعيل safe_mode سيتوقف الوصول لأي ملفات غير عندما لا يكون نفس المستخدم وهكذا نتجنب للوصول إلى ملف مثل /etc/passwd

safe_mode = On

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

safe_mode = Off
safe_mode_gid = On

المراجع:
– PHP: Security
– Hardened PHP
– Hardening PHP from php.ini

محمد حنين

الإسم الكامل محمد حنين أحد geek من أمد طويل ، مطور ويب، محب للحرية، مستعمل نضام لينوكس، وأخيرا مجرم باللغة العربية للأسف في وقتها. معلومات أكثر عني أو الإتصال بي Mohammed Hanine

You may also like...

اترك تعليقاً

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