open_basedir
"प्रति साइट" आधार पर स्थापित करने पर विचार करें । open_basedir
एक php.ini सेटिंग है जो आपकी स्क्रिप्ट को परिभाषित सफेद सूची के बाहर फ़ाइलों तक पहुँचने से रोकेगी। यदि आपका सर्वर कई साइटों को होस्ट करता है, तो यह एक साइट को दूसरी साइट से डेटाबेस सेटिंग्स को पढ़ने से रोकेगा। यह कोर सिस्टम फ़ाइलों तक पहुँचने / संशोधन करने से php स्क्रिप्ट को भी रोकेगा। ओपन बेसिर सेट करना आसान है, बस php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
प्रत्येक अपाचे वीहोस्ट को लाइन " " जोड़ें ।
सभी साइटों / फ़ोल्डरों के लिए PHP स्क्रिप्ट इंजन को बंद करने पर भी विचार करें, जिसमें PHP स्क्रिप्ट्स नहीं होनी चाहिए (जैसे एक अपलोड की गई छवि फ़ोल्डर)। फिर से, यह सरल है, किसी भी Apache VirtualHosts को php की आवश्यकता नहीं होने पर "php_admin_value engine off" जोड़ें। किसी निर्देशिका में PHP को निष्क्रिय करने के लिए, एक ही चीज़ को एक निर्देशिका टैग में रखें।
संभव के रूप में फ़ाइल अनुमतियों को चलाएं, Apache उपयोगकर्ता के लिए PHP स्क्रिप्ट तक पहुंच से बचें, यह एक रनिंग स्क्रिप्ट को उसी साइट / सर्वर पर स्वयं या अन्य स्क्रिप्ट को संशोधित करने से रोकता है। यदि संभव हो तो 777 अनुमतियों से बचें, एप्लिकेशन को चलाने और उन का उपयोग करने के लिए आवश्यक न्यूनतम अनुमतियों का पता लगाएं।
यदि आप कई साइटों की मेजबानी कर रहे हैं, प्रत्येक अपने स्वयं के डेटाबेस के साथ, प्रत्येक के लिए एक अलग MySQL / Postgres उपयोगकर्ता का उपयोग करें, और प्रत्येक उपयोगकर्ता पर अनुमतियाँ सेट करें जैसे कि उनके पास केवल प्रासंगिक डेटाबेस तक पहुंच हो। फिर से यह एक बदमाश स्क्रिप्ट को दूसरे एप्लिकेशन के डेटाबेस के साथ छेड़छाड़ करने से रोकेगा।
Suosin, HardenedPHP, mod_security और पसंद सभी मूल्यवान हैं, लेकिन इनका उपयोग कसकर लॉक किए गए कॉन्फ़िगरेशन के अलावा करते हैं, इसके बजाय नहीं।