بعد ان اخذنا جوله جيده على اساسيات وميكانيكيات الحماية بالـphp سنتجه الى الجانب التطبيقي وكيف يمكننا اعداد الphp لكي تعمل بأمان على سيرفراتنا بدون ادنى جهد.
واريد ان اذكر هنا انه يجب الحذر الشديد عند التعامل مع ملفات الاعداد مثل php.ini و httpd.conf اوا اي ملف مرتبط بها حيث انها حساسه جدا واي خطأ بأدخال البيانات سوف يسبب خطأ عند اعاده تشغيل الapache لذلك يجب الانتباه .
سينقسم الشرح الى جانبين
الاول تركيب الحماية والثاني سوف يكون عن تهيئه بيئه الphp للعملاء على السيرفر فيما يتناسب مع احتياجات برامجهم ,,, فيوجد بعض البرامج اللتي تطلب تفعيل الـregister_globals او الـsafe_mode على سبيل المثال وبالتأكيد لن نريد خساره العميل لعدم توافق بيئه السيرفر مع سكربتات موقعه ومن جانب اخر لا نريد فقدان الحماية على السيرفر اي يجب ان نبقي عى شعرة معاوية بيننا وبين العميل

.
اولا تركيب الحماية :
___تنبيه____تنبيه___تنبيه___
تأكد من عمل نسخه احتياطية لملف php.ini قبل الشروع بالتعديل عليه
___تنبيه____تنبيه___تنبيه___
يلزم لكل ما سبق انا نقوم بتحرير ملف php.ini على حسب احتياجاتك الخاصه (سأقوم هنا بوضع اعدادات سيرفري) وسوف تجده بالمسار التالي
او بالمسار التالي اذا كنت تملك الـZend_optemizer على سيرفرك
كود:
/usr/local/Zend/etc/
قم بتطبيق الامر التالي
nano php.ini او pico php.ini على حسب المحرر الموجود على سيرفرك
الان سنعدل على الخيارات خطوه وخطوه وافضل عمل رستارت للـapache بعد كل تعديل لكي نتمكن من تعديل الخطأ بسرعة في حاله حدوثه
1-الان قم بالبحث عن safe_mode بواسطة ctrl+w او بالبحث يدويا عنه
وقم بالتعديل عليه لكي يصبح
2- ابحث عن safe_mode_gid وتأكد من ان قيمته كالاتي
3- ابحث عن disable_functions
وهنا سوف نقوم بتعطيل الدوال الخطره + تعطيل الدوال تخطي الـsafe_mode حيث للأسف لم يقم فريق الـphp بفعل اي شيء حيال الثغرات المكتشفه على حسب علمي
عموما من الافضل ان تعطل الدوال التالية
دوال ثغره تخطي السيف مود :
كود:
copy,error_log,tempnam,curl_init
دوال php الخطيره:
كود:
system,passthru,exec,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,highlight_file,escape
shellcmd,pclose,pfsockopen,chgrp,chmod,debugger_off,debugger_on,leak,listen,define_syslog_variables,ftp_exec,posix_uname,posix_getpwuid,get_current_user,getmyuid,getmygid,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,pfsockopen,chgrp,chmod,debugger_off,debugger_on,leak,listen,define_syslog_variables,ftp_exec,posix_uname,posix_getpwuid,get_current_user,getmyuid,getmygid,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,escapeshellarg,getservbyport,getservbyname,myshellexec,escapeshellarg
وتأكد من كتابتها على سطر واحد عند تحريرها داخل ملف php.ini والا ستسبب مشكله عند التشغيل (اكرر على سطر واحد)
4- قم بالبحث عن register_globals وتأكد من ان قيمتها كالاتي
كود:
register_globals = Off
5- قم بالبحث عن allow_url_fopen وتأكد من ان قيمتها كالاتي
كود:
allow_url_fopen = Off
6-قم بالبحث عن expose_php وتأكد ان قيمتها كالاتي
والان قم بعمل اعادة تشغيل للـapache سواء عن طريق لوحة تحكم السيرفر او عن طريق الامر التالي
وسوف يكون المخرج كالتالي
كود:
/usr/sbin/httpd restart: httpd restarted
وفي حالة ظهور اي خطأ سوف تكون المشكله بسبب التعديل بطريقه خاطئه فقم بمراجعة تعديلاتك
