من الواضح أن PHP+MySQL+Apache هي تقنية ويب شائعة جدًا. هذا المزيج قوي وقابل للتطوير ولا يزال مجانيًا. ومع ذلك ، فإن الإعدادات الافتراضية لـ PHP ليست مناسبة لمواقع الويب الموجودة بالفعل عبر الإنترنت. أدناه ، يمكننا تعزيز سياسة أمان PHP عن طريق تعديل ملف التكوين الافتراضي!
0x01: تعطيل وظيفة معالجة ملفات URL عن بعد
مثل وظيفة معالجة ملفات FOPEN ، التي تقبل معلمات قواعد الملف (على سبيل المثال: FOPEN ('http: //www.yoursite.com'' ،'R')). يمكن لهذه الوظيفة الوصول بسهولة إلى الموارد البعيدة. ومع ذلك ، هذا تهديد أمني مهم للغاية. يعد تعطيل هذه الوظيفة للحد من وظيفة الملف خيارًا جيدًا. قم بإجراء التعديلات التالية في ملف php.ini:
نسخة الكود كما يلي:
left_url_fopen = OFF
0x02: تعطيل تسجيل المتغيرات العالمية
في الإصدارات قبل 4.2.0 ، استخدم PHP المتغيرات العالمية كمدخلات. هذه الوظيفة تسمى register_globals. في تطبيقات الويب ، تسبب في العديد من مشاكل الأمن لأنها تتيح للمهاجمين تشغيل المتغيرات العالمية بسهولة في بعض الحالات. لحسن الحظ ، يتم تعطيل الوظيفة في 4.2.0 بشكل افتراضي. إنه أمر خطير للغاية. يجب تعطيل هذه الوظيفة تحت أي ظرف من الظروف. إذا كانت بعض البرامج النصية تتطلب هذه الميزة ، فهناك تهديد أمني محتمل لهذا البرنامج النصي. تعديل pnp.ini لتعطيل هذه الوظيفة:
نسخة الكود كما يلي:
register_globals = OFF
0x03: عمليات قراءة وكتابة PHP المقيدة
في العديد من عمليات تطوير الويب ، تحتاج البرامج النصية لـ PHP إلى قراءة وكتابة العمليات إلى نظام الملفات المحلي ، مثل/var/www/htdocs/files. من أجل تعزيز الأمان ، يمكنك تعديل أذونات القراءة والكتابة للملفات المحلية:
نسخة الكود كما يلي:
open_basedir =/var/www/htdocs/files
0x04: الحد الأقصى
يعد الحد من وقت تنفيذ PHP واستخدام الذاكرة ونشر البيانات وتحميله هو أفضل استراتيجية ، ويمكن إجراء التكوين التالي:
نسخة الكود كما يلي:
max_execution_time = 30 ؛ وقت تنفيذ السيناريو الأقصى
max_input_time = 60 ؛ أقصى الوقت الذي يقضيه في تحليل المدخلات
Memory_limit = 16m ؛ الذاكرة القصوى المستخدمة بواسطة نص واحد
expload_max_filesize = 2m ؛ حجم ملف التحميل القصوى
post_max_size = 8m ؛ أقصى حجم ما بعد
0x05: تعطيل رسائل الخطأ وتمكين التسجيل
في الإعدادات الافتراضية ، ستخرج PHP رسالة خطأ إلى المتصفح. هذا الإعداد الافتراضي هو التكوين الأكثر منطقية أثناء عملية تطوير التطبيق. ومع ذلك ، يمكن أيضًا تسرب بعض معلومات الأمان إلى المستخدم ، مثل مسار التثبيت واسم المستخدم. في مواقع الويب التي تم تطويرها ، من الأفضل تعطيل رسالة الخطأ وإخراج رسالة الخطأ إلى ملف السجل.
نسخة الكود كما يلي:
display_errors = OFF
log_errors = on
0x06: إخفاء ملف PHP
إذا لم يتم إخفاء ملف PHP ، فيمكننا الحصول على إصدار الخادم PHP من خلال طرق مختلفة ، على سبيل المثال: http://www.example.com/script.php؟=phpb8b5f2a0-3c92-11d3a9-4c7b08c10000
من الواضح ، لا نريد أن يحصل المستخدمون مباشرة على إصدار PHP من خادم موقع الويب الخاص بك. لحسن الحظ ، هناك مفتاح في php.ini يمكنه تعطيل هذه الوظيفة:
نسخة الكود كما يلي:
expose_php = OFF
0x07: تكوين الوضع الآمن
بشكل افتراضي ، يمكن تكوين PHP في الوضع الآمن. في هذا الوضع ، يحظر Apache الوصول إلى الملفات ومتغيرات البيئة والبرامج الثنائية. في الوضع الآمن ، فإن المشكلة الأكبر هي أنه يمكن لمالك الملف فقط الوصول إلى ملف PHP هذا. إذا قام العديد من المطورين بتطوير هذا البرنامج بشكل مشترك ، فإن مثل هذا الإعداد غير واقعي. عندما تحتاج إلى الوصول إلى ملف PHP ، تحتاج إلى تعديل مالك الملف. مشكلة أخرى هي أن البرامج الأخرى لا يمكنها الوصول إلى ملفات PHP هذه. يمكن للتكوين التالي تعديل أذونات الملف إلى مجموعة مستخدم بدلاً من مستخدم واحد.
نسخة الكود كما يلي:
Safe_Mode = Off
safe_mode_gid = on
من خلال تمكين Safe_Mode_Gid ، يمكنك الوصول إلى ملفات PHP باستخدام هذه المجموعة من Apache. يعد الوضع الآمن فعالًا جدًا أيضًا في منع التنفيذ الثنائي ، ومع ذلك ، يريد المطورون أن يكونوا قادرين على تشغيل بعض الملفات الثنائية في بعض المواقف المحددة. في هذه الحالات الخاصة ، يمكنك وضع الملف الثنائي في دليل ، على سبيل المثال (/var/www/binaries) ، ويمكنك إجراء الإعدادات التالية:
نسخة الكود كما يلي:
Safe_mode_exec_dir =/var/www/binaries
أخيرًا ، من خلال الإعدادات التالية ، يمكنك الوصول إلى متغيرات بيئة الخادم ، وتوفير بادئة "_" التي يمكنها فقط الوصول إلى متغيرات البيئة مع بادئات محددة:
نسخة الكود كما يلي:
safe_mode_allowed_env_vars = php_
0x08: تقييد الوصول العام إلى الملفات بأسماء لاحقة محددة
بسبب أسباب الأمان ، لا يمكن الوصول إلى العديد من الملفات ذات الأسماء المحددة من قبل المستخدمين. على سبيل المثال ، تحتوي الملفات التي تحتوي على .inc لاحقة بعض المعلومات الحساسة ، مثل معلومات اتصال MySQL. إذا لم يكن هناك تكوين مناسب ، فيمكن لكل مستخدم الوصول إلى ملف التكوين هذا. من أجل تحسين أمان الموقع ، تحتاج إلى تكوين ما يلي في ملف ..htaccess:
نسخة الكود كما يلي:
<ilesmatch>
الطلب يسمح ، إنكار
إنكار من الجميع
</filesmatch>
0x09: ملخص
التكوين الافتراضي لـ PHP للمطورين. إذا كان موقع الويب لعدد كبير من المستخدمين ، فمن المستحسن إعادة تكوين PHP.