विश्वसनीय होस्ट सेटिंग्स
यह दस्तावेज़ अपूर्ण है। अधिक जानकारी प्राप्त करें।
HTTP HOST Header हमलों से सुरक्षा (अपने साइट को यह सोचने न दें कि यह कोई और है)
Drupal 7 ने कोर में एक नई सुविधा जोड़ी, जो सीधे उपयोगकर्ता इंटरफ़ेस का हिस्सा नहीं है, लेकिन इसे कभी-कभी poormanscron कहा जाता है। यह सुविधा Drupal साइट पर नियमित कार्यों जैसे कि लॉग फ़ाइलों को साफ़ करना, ईमेल भेजना और कैश साफ़ करना चलाती है। यह सुविधा, "बेस URL" के डायनामिक निर्धारण (Drupal 4.7 में जोड़ा गया) के साथ मिलकर, कुछ अजीब स्थितियाँ पैदा कर सकती है। यह लेख इन स्थितियों का वर्णन करता है और बताता है कि आप इन्हें कैसे रोक सकते हैं।
परिदृश्य 1: उपयोगकर्ताओं को गलत डोमेन से ईमेल प्राप्त होना
इस व्यवहार को दोहराना काफी आसान है:
1. मौजूदा साइट के IP पते की ओर एक नया डोमेन इंगित करें — मान लीजिए मौजूदा साइट है http://www.example.com, और नया नाम जो उसी IP की ओर इशारा करता है, है http://other-site.example.org.
2. इस URL पर जाएं: http://other-site.example.org/user/password
3. कोई उपयोगकर्ता नाम दर्ज करें जो संभवतः साइट पर मौजूद हो।
अब Drupal यह सोचता है कि साइट का बेस URL http://other-site.example.org है, और ईमेल टोकन जैसे [user: one-time-login-url] इस नए डोमेन का उपयोग करेंगे। परिणामस्वरूप, उपयोगकर्ता को ऐसा ईमेल मिलेगा जो उन्हें भ्रमित कर सकता है या संभावित रूप से सुरक्षा जोखिम उत्पन्न कर सकता है:
- वे पासवर्ड रीसेट लिंक पर क्लिक कर सकते हैं, जिसे एक दुर्भावनापूर्ण साइट द्वारा दुरुपयोग किया जा सकता है।
- वे अपना उपयोगकर्ता नाम/पासवर्ड गलत साइट पर दर्ज कर सकते हैं, जो "सोशल इंजीनियरिंग" का एक उदाहरण है।
परिदृश्य 2: गलत डोमेन के साथ कैश रिकॉर्ड्स
अगर उपयोगकर्ता गलत डोमेन से अनुरोध भेजता है, तो Drupal कैश में गलत डोमेन वाला डेटा संग्रहीत कर सकता है। बाद में साइट सही डोमेन से भी इस गलत डेटा को प्रदर्शित कर सकती है। कोर पेज कैश इस समस्या को रोकता है, लेकिन अन्य कैशिंग सिस्टम प्रभावित हो सकते हैं।
परिदृश्य 3: क्रॉन के दौरान गलत डोमेन से ईमेल
यदि साइट cron चलाते समय ईमेल भेजती है, और यह गलत डोमेन से शुरू होती है, तो ईमेल में गलत लिंक शामिल हो सकते हैं। उपयोगकर्ता example.com की जगह other-site.example.org से आए लिंक देखकर भ्रमित होंगे।
Drupal के डायनामिक base_url समस्या के समाधान
इस समस्या को रोकने के लिए चार संभावित समाधान हैं:
- settings.php में एक निश्चित
$base_url
सेट करें। इससे Drupal हमेशा उसी डोमेन को उपयोग करेगा। - प्रत्येक डोमेन के लिए अलग-अलग settings.php फ़ाइलें रखें (उदाहरण: sites/example.com/settings.php)।
- वेब सर्वर को इस तरह कॉन्फ़िगर करें कि गलत डोमेन अनुरोधों पर एक त्रुटि पृष्ठ लौटाए।
- गलत डोमेन से आने वाले अनुरोधों को सही डोमेन पर रीडायरेक्ट करें।
Drupal 8 में Trusted Host सुरक्षा सेटिंग
जनवरी 2015 से, Drupal 8 Trusted Host Patterns को सपोर्ट करता है। आप settings.php में regex पैटर्न की एक सूची जोड़ सकते हैं, जिनसे आने वाले अनुरोध मेल खाने चाहिए। उदाहरण:
$settings['trusted_host_patterns'] = [ '^www\.example\.com$', ];
यदि आप लोकल डेवलपमेंट पर काम कर रहे हैं, तो आपको '^localhost$'
पैटर्न जोड़ना चाहिए।
MAMP 3 के लिए Trusted Host सेटिंग
MAMP (3.5.2) पर '^localhost$'
त्रुटि देता है, इसलिए अपने लोकल साइट नाम का उपयोग करें:
$settings['trusted_host_patterns'] = [ '^drupal8$', ];
ध्यान दें: MAMP 4.2 पर '^localhost$' सामान्य रूप से काम करता है।
Acquia Dev Desktop 2 के लिए Trusted Host सेटिंग
Acquia Dev Desktop 2 (Drupal 8.6.2 और PHP 7.2.8) के लिए उदाहरण:
$settings['trusted_host_patterns'] = array( '^sitename\.dd$', );
XAMPP के लिए Trusted Host सेटिंग
settings.php में निम्नलिखित जोड़ें:
$settings['trusted_host_patterns'] = [ '^localhost$', '^192\.168\.00\.52$', '^127\.0\.0\.1$', ];
'^localhost$'
– केवल localhost एक्सेस की अनुमति देता है।'^192\.168\.00\.52$'
– केवल इस IP पते से एक्सेस की अनुमति देता है।'^127\.0\.0\.1$'
– केवल 127.0.0.1 से एक्सेस की अनुमति देता है।
Lando के लिए Trusted Host सेटिंग
Drupal 8.7.10 और PHP 7.2 पर परीक्षण किया गया:
$settings['trusted_host_patterns'] = [ '^'.getenv('LANDO_APP_NAME').'\.lndo\.site$', '^localhost$', '^'.getenv('LANDO_APP_NAME').'\.localtunnel\.me$', '^192\.168\.1\.100$' ];
नोट: Lando में और भी कई environment variables होते हैं, जिन्हें आप अपने डेटाबेस credentials सेट करने के लिए उपयोग कर सकते हैं। उदाहरण के लिए:
$lando_info = json_decode(getenv('LANDO_INFO'), TRUE);