संक्षिप्त उत्तर: हाँ
इस सवाल का जवाब एक अस्वाभाविक हाँ है , और अन्यथा पूरी तरह से गैर जिम्मेदाराना है ।
दीर्घ उत्तर: एक वास्तविक दुनिया का उदाहरण
मुझे अपने वास्तविक सर्वर से बहुत वास्तविक उदाहरण प्रदान करने की अनुमति दें, जहां wp-config.php
वेब रूट के बाहर जाने से विशेष रूप से इसकी सामग्री को कैप्चर होने से रोका जा सके ।
बग:
Plesk में एक बग के इस विवरण पर एक नज़र डालें (11.0.9 MU # 27 में तय):
होस्टिंग योजना के साथ सदस्यता को समन्वयित करने के बाद Plesk ने उप-डोमेन अग्रेषित किया (117199)
हानिरहित लगता है, है ना?
खैर, यहाँ मैंने इस बग को ट्रिगर करने के लिए क्या किया है:
- अन्य URL पर रीडायरेक्ट करने के लिए (उदाहरण के लिए एक उप डोमेन सेट अप
site.staging.server.com
करने के लिए site-staging.ssl.server.com
)।
- सदस्यता की सेवा योजना (जैसे इसके PHP विन्यास) को बदल दिया।
जब मैंने ऐसा किया, तो Plesk ने उपडोमेन को डिफॉल्ट करने के लिए रीसेट कर दिया: ~/httpdocs/
बिना किसी व्याख्याकार (जैसे PHP) के सक्रिय के साथ सामग्री की सेवा ।
और मैंने ध्यान नहीं दिया। हफते के लिए।
परिणाम:
- साथ
wp-config.php
वेब जड़ में, एक अनुरोध के /wp-config.php
वर्डप्रेस विन्यास फाइल डाउनलोड किया जाएगा।
- साथ
wp-config.php
वेब जड़ के बाहर, एक अनुरोध के /wp-config.php
एक पूरी तरह से हानिरहित फ़ाइल डाउनलोड की। असली wp-config.php
फ़ाइल डाउनलोड नहीं की जा सकी।
इस प्रकार, यह स्पष्ट है कि wp-config.php
वेब रूट के बाहर जाने से वास्तविक दुनिया में सुरक्षा संबंधी लाभ होते हैं ।
wp-config.php
अपने सर्वर पर किसी भी स्थान पर कैसे जाएं
वर्डप्रेस स्वचालित रूप से आपकी wp-config.php
फ़ाइल के लिए आपके वर्डप्रेस इंस्टॉलेशन के ऊपर एक निर्देशिका को देखेगा , इसलिए यदि आपने इसे स्थानांतरित कर दिया है, तो आप कर रहे हैं!
लेकिन क्या होगा अगर आपने इसे कहीं और स्थानांतरित कर दिया है? आसान। wp-config.php
निम्नलिखित कोड के साथ वर्डप्रेस निर्देशिका में एक नया बनाएँ :
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
(अपनी स्थानांतरित wp-config.php
फ़ाइल के वास्तविक पथ के लिए उपरोक्त पथ को बदलना सुनिश्चित करें ।)
यदि आप किसी समस्या में भाग लेते हैं open_basedir
, तो open_basedir
अपने PHP कॉन्फ़िगरेशन में निर्देश के लिए नया पथ जोड़ें :
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
बस!
इसके विपरीत तर्क देना
wp-config.php
वेब रूट के बाहर जाने के खिलाफ हर तर्क गलत धारणाओं पर टिका है।
तर्क 1: यदि PHP अक्षम है, तो वे पहले से ही अंदर हैं
जिस तरह से किसी को यह देखने के लिए जा रहा है कि सामग्री [ wp-config.php
] है अगर वे आपके सर्वर को PHP दुभाषिया को दरकिनार करते हैं ... यदि ऐसा होता है, तो आप पहले से ही परेशानी में हैं: उनके पास आपके सर्वर तक सीधी पहुंच है।
FALSE : मैं जिस परिदृश्य का वर्णन करता हूं, वह एक गलत धारणा का परिणाम है, न कि घुसपैठ का।
तर्क 2: गलती से PHP को अक्षम करना दुर्लभ है, और इसलिए महत्वहीन है
यदि किसी हमलावर के पास PHP हैंडलर बदलने के लिए पर्याप्त पहुंच है, तो आप पहले से ही खराब हैं। मेरे अनुभव में आकस्मिक परिवर्तन बहुत कम हैं, और उस स्थिति में पासवर्ड बदलना आसान होगा।
FALSE : मैं जिस परिदृश्य का वर्णन करता हूं, वह सर्वर सॉफ़्टवेयर के एक सामान्य टुकड़े में बग का परिणाम है, जो एक सामान्य सर्वर कॉन्फ़िगरेशन को प्रभावित करता है। यह शायद ही "दुर्लभ" है (और इसके अलावा, सुरक्षा का मतलब दुर्लभ परिदृश्य के बारे में चिंता करना है)।
डब्ल्यूटीएफ : घुसपैठ के बाद पासवर्ड बदलना मुश्किल से मदद करता है अगर घुसपैठ के दौरान संवेदनशील जानकारी को उठाया गया था। वास्तव में, क्या हम अभी भी सोचते हैं कि वर्डप्रेस का उपयोग केवल आकस्मिक ब्लॉगिंग के लिए किया जाता है, और यह कि हमलावर केवल बचाव में रुचि रखते हैं? चलो हमारे सर्वर की रक्षा के बारे में चिंता करें, न कि किसी के अंदर जाने के बाद इसे बहाल करना।
तर्क 3: पहुंच से इनकार करना wp-config.php
काफी अच्छा है
आप अपने वर्चुअल होस्ट कॉन्फिग के माध्यम से फ़ाइल तक पहुंच को प्रतिबंधित कर सकते हैं या
.htaccess
- प्रभावी ढंग से फ़ाइल के बाहर पहुंच को उसी तरह सीमित कर सकते हैं जैसे कि दस्तावेज़ के बाहर ले जाना।
FALSE : कल्पना करें कि वर्चुअल होस्ट के लिए आपके सर्वर डिफॉल्ट हैं: कोई PHP, नहीं .htaccess
, allow from all
(उत्पादन वातावरण में शायद ही असामान्य)। यदि आपका कॉन्फ़िगरेशन किसी रूटीन ऑपरेशन के दौरान किसी तरह रीसेट हो जाता है - जैसे, कहो, एक पैनल अपडेट - सब कुछ अपनी डिफ़ॉल्ट स्थिति में वापस आ जाएगा, और आप उजागर होंगे।
यदि आपका सुरक्षा मॉडल विफल हो जाता है जब सेटिंग्स गलती से डिफ़ॉल्ट पर रीसेट हो जाती हैं, तो आपको अधिक सुरक्षा की आवश्यकता होती है।
डब्ल्यूटीएफ : कोई भी विशेष रूप से सुरक्षा की कम परतों की सिफारिश क्यों करेगा? महंगी कारों में सिर्फ ताले नहीं होते; उनके पास अलार्म, इमोबिलाइज़र और जीपीएस ट्रैकर्स भी हैं। अगर किसी चीज की कीमत बचती है, तो उसे सही करें।
तर्क 4: अनधिकृत पहुंच wp-config.php
कोई बड़ी बात नहीं है
डेटाबेस जानकारी वास्तव में [ wp-config.php
] में एकमात्र संवेदनशील सामान है ।
FALSE : प्रमाणीकरण कुंजी और लवण का उपयोग किसी भी संभावित अपहरण हमलों में किया जा सकता है।
डब्ल्यूटीएफ : यहां तक कि अगर डेटाबेस क्रेडेंशियल केवल एक चीज थी wp-config.php
, तो आपको एक हमलावर को उन पर अपना हाथ पाने से डरना चाहिए ।
तर्क 5: wp-config.php
वेब रूट के बाहर जाने से वास्तव में सर्वर कम सुरक्षित हो जाता है
आपको अभी भी वर्डप्रेस का उपयोग करना है [ wp-config.php
], इसलिए आपको open_basedir
दस्तावेज़ रूट के ऊपर निर्देशिका को शामिल करने के लिए विस्तार करने की आवश्यकता है ।
FALSE : मान लिया गया wp-config.php
है httpdocs/
, बस इसे स्थानांतरित करने के लिए ../phpdocs/
, और open_basedir
केवल httpdocs/
और शामिल करने के लिए सेट करें phpdocs/
। उदाहरण के लिए:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
( यदि आपके पास एक है, तो हमेशा याद रखें /tmp/
या अपनी उपयोगकर्ता tmp/
निर्देशिका शामिल करें ।)
निष्कर्ष: विन्यास फाइल हमेशा हमेशा चाहिए हमेशा वेब जड़ के बाहर स्थित हो
यदि आप सुरक्षा की परवाह करते हैं, तो आप wp-config.php
अपनी वेब रूट से बाहर चले जाएंगे ।