هل هناك فرق بين وحدة Apache وcgi (فيما يتعلق بالأمان)؟

StackOverflow https://stackoverflow.com/questions/78108

سؤال

على سبيل المثال هل هو أكثر أمانا للاستخدام mod_php بدلاً من php-cgi؟أم أنها أكثر أمانا للاستخدام mod_perl بدلا من التقليدية cgi-scripts?

أنا مهتم بشكل أساسي بالمخاوف الأمنية، ولكن السرعة قد تكون مشكلة إذا كانت هناك اختلافات كبيرة.

هل كانت مفيدة؟

المحلول

الأمن بأي معنى؟وفي كلتا الحالتين، يعتمد الأمر حقًا على البرنامج النصي الذي يتم تشغيله ومدى جودة كتابته.هناك عدد كبير جدًا من البرامج النصية هذه الأيام غير مؤكدة ولا تقوم بالتحقق من صحة الإدخال بشكل صحيح.

أنا شخصيًا أفضل FastCGI على mod_php لأنه إذا ماتت عملية FastCGI فسيتم ظهور عملية جديدة، بينما رأيت mod_php يقتل Apache بالكامل.

أما بالنسبة للأمان، فباستخدام FastCGI يمكنك تقنيًا تشغيل عملية php تحت مستخدم مختلف عن مستخدم خوادم الويب الافتراضية.

في ملاحظة منفصلة، ​​إذا كنت تستخدم دعم ترابط العامل الجديد الخاص بـ Apache، فستحتاج إلى التأكد من أنك لا تستخدم mod_php لأن بعض الامتدادات ليست آمنة للترابط وستتسبب في حالات تعارض.

نصائح أخرى

إذا قمت بتشغيل الخادم الخاص بك، فاتبع طريقة الوحدة، فهو أسرع إلى حد ما.إذا كنت تستخدم خادمًا مشتركًا، فقد تم بالفعل اتخاذ القرار نيابةً عنك، وعادةً ما يكون ذلك من جانب CGI.والسبب في ذلك هو أذونات نظام الملفات.يتم تشغيل PHP كوحدة مع أذونات خادم http (عادةً "Apache") وما لم تتمكن من تعديل البرامج النصية الخاصة بك إلى هذا المستخدم، فيجب عليك تعديلها إلى 777 - قابلة للقراءة عالميًا.وهذا يعني، للأسف، أنه يمكن لجارك على الخادم إلقاء نظرة عليها - فكر في المكان الذي تخزن فيه كلمة مرور الوصول إلى قاعدة البيانات.لقد قامت معظم الخوادم المشتركة بحل هذه المشكلة باستخدام أشياء مثل phpsuexec وما شابه، والتي تقوم بتشغيل البرامج النصية بأذونات مالك البرنامج النصي، لذا يمكنك (يجب) تعديل التعليمات البرمجية الخاصة بك إلى 644.يعمل Phpsuexec فقط مع PHP كـ CGI - هذا كل شيء تقريبًا، إنه مجرد جهاز محلي - لا يشكل أي فرق بالنسبة للعالم بأسره.

تحدث معظم الثغرات الأمنية بسبب البرمجة الرديئة في البرنامج النصي نفسه، لذلك يكون الأمر موضع نقاش إذا تم تشغيلها كـ CGI أو في وحدات نمطية.ومع ذلك، من المحتمل أن تؤدي وحدات Apache إلى تعطل خادم الويب بأكمله (خاصة إذا كنت تستخدم MPM مترابطة) ويشتهر mod_php بذلك.

سيكون cgi أبطأ، ولكن في الوقت الحاضر توجد حلول لذلك، خاصة FastCGI والأصدقاء.

ما هو نموذج التهديد الخاص بك؟

من مستند PHP install.txt لـ PHP 5.2.6:

توفر وحدات الخادم أداءً أفضل بشكل ملحوظ ووظائف إضافية مقارنةً بالثنائي CGI.

بالنسبة لـ IIS/PWS:

تحذير

باستخدام إعداد CGI ، يكون الخادم الخاص بك مفتوحًا للعديد من الهجمات الممكنة.يرجى قراءة قسم أمان CGI الخاص بنا لمعرفة كيفية الدفاع عن نفسك من تلك الهجمات.

وحدة مثل mod_php أو FastCGI أسرع بشكل لا يصدق من CGI العادي.فقط لا تفعل CGI.كما قال آخرون، يعد برنامج PHP بحد ذاته أكبر تهديد أمني، ولكن مع تجاهل وجود اعتبار آخر، على المضيفين المشتركين.

إذا كان البرنامج النصي الخاص بك موجودًا على مضيف مشترك مع برامج PHP أخرى ولم يكن المضيف يعمل في الوضع الآمن، فمن المحتمل أن جميع عمليات الخادم تعمل بنفس المستخدم.قد يعني هذا أن أي برنامج PHP آخر يمكنه قراءة نصك الخاص، بما في ذلك كلمات مرور قاعدة البيانات.لذا تأكد من التحقق من تكوين الخادم للتأكد من أن الكود الخاص بك غير قابل للقراءة للآخرين.

حتى إذا كنت تتحكم في استضافتك الخاصة، فضع في اعتبارك أن تطبيق ويب آخر تم اختراقه على الخادم قد يكون بمثابة قناة للوصول إلى الآخرين.

من المؤكد أن استخدام الوحدة المضمنة سيكون أسرع من استخدام CGI.تعتمد الآثار الأمنية على التكوين.في التكوين الافتراضي تكون متشابهة إلى حد كبير، لكن cgi يسمح ببعض التكوينات الأكثر أمانًا التي لا يمكن للوحدات المضمنة توفيرها، خاصة في سياق الاستضافة المشتركة.ما الذي تريد تأمين نفسك منه بالضبط؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top