ऐसा करने का एकमात्र सुरक्षित तरीका है
इस पृष्ठ के अन्य सभी उत्तरों में सुरक्षा निहितार्थ हैं जिनके बारे में आपको जानकारी होनी चाहिए।
वर्तमान डोमेन को पुनर्प्राप्त करने की एकमात्र गारंटीकृत सुरक्षित विधि
करने के लिए है 𝓪 𝓼𝓮𝓬𝓾𝓻𝓮 𝓵𝓸𝓬𝓪𝓽𝓲𝓸𝓷 𝔂𝓸𝓾𝓻𝓼𝓮𝓵𝓯 𝓲𝓷 𝓲𝓽 𝓼𝓽𝓸𝓻𝓮।
अधिकांश फ्रेमवर्क आपके लिए डोमेन स्टोर करने का ध्यान रखते हैं, इसलिए आप अपने विशेष ढांचे के लिए प्रलेखन से परामर्श करना चाहेंगे। यदि आप एक फ्रेमवर्क का उपयोग नहीं कर रहे हैं, तो निम्न स्थानों में से एक में डोमेन को संग्रहीत करने पर विचार करें:
+ ------------------------------------------------- --- + ----------------------------------- +
| डोमेन के भंडारण के सुरक्षित तरीके | द्वारा प्रयुक्त |
+ ------------------------------------------------- --- + ----------------------------------- +
| एक विन्यास फाइल | जुमला, द्रुपाल / सिम्फनी |
| डेटाबेस | वर्डप्रेस |
| एक पर्यावरण चर | लारवेल |
| एक सेवा रजिस्ट्री | कुबेरनेट्स डीएनएस |
+ ------------------------------------------------- --- + ----------------------------------- +
आप निम्नलिखित का उपयोग कर सकते हैं ... लेकिन वे असुरक्षित हैं
हैकर्स इन वैरिएबल को आउटपुट बना सकते हैं, जो भी डोमेन वे चाहते हैं। यह कैश पॉइज़निंग और मुश्किल से ध्यान देने योग्य फ़िशिंग हमलों को जन्म दे सकता है।
$_SERVER['HTTP_HOST']
यह अनुरोध हेडर से डोमेन प्राप्त करता है जो हैकर्स द्वारा हेरफेर करने के लिए खुला है । के जैसा:
$_SERVER['SERVER_NAME']
यदि एपेक सेटिंग usecanonicalname बंद है तो इसे बेहतर बनाया जा सकता है; जिस स्थिति में $_SERVER['SERVER_NAME']अब उन्हें मनमाने मूल्यों के साथ आबाद होने की अनुमति नहीं दी जाएगी और वे सुरक्षित रहेंगे। यह, हालांकि, गैर-डिफ़ॉल्ट और सेटअप का सामान्य नहीं है।
लोकप्रिय प्रणालियों में
नीचे आप निम्न रूपरेखाओं / प्रणालियों में वर्तमान डोमेन कैसे प्राप्त कर सकते हैं:
वर्डप्रेस
$urlparts = parse_url(home_url());
$domain = $urlparts['host'];
आप वर्डप्रेस में एक यूआरएल का निर्माण कर रहे हैं, बस का उपयोग HOME_URL या SITE_URL , या के किसी भी अन्य URL कार्यों ।
Laravel
request()->getHost()
request()->getHostसमारोह Symfony से विरासत में मिला है, और सुरक्षित कर दिया गया है के बाद से 2013 CVE-2013-4752 समझौता किया गया था।
Drupal
इंस्टॉलर अभी तक इसे सुरक्षित बनाने का ध्यान नहीं रखता ( # 2404259 जारी करता है )। लेकिन Drupal 8 में प्रलेखन है जिसे आप अपने Drupal स्थापना को सुरक्षित करने के लिए विश्वसनीय होस्ट सेटिंग्स पर अनुसरण कर सकते हैं जिसके बाद निम्न का उपयोग किया जा सकता है:
\Drupal::request()->getHost();
अन्य ढांचे
अपने पसंदीदा ढांचे में वर्तमान डोमेन को कैसे शामिल करें, इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें। ऐसा करते समय, कृपया संबंधित स्रोत कोड या किसी अन्य चीज़ के लिए एक लिंक शामिल करें जो मुझे यह सत्यापित करने में मदद करेगा कि फ्रेमवर्क सुरक्षित रूप से काम कर रहा है।
परिशिष्ट
शोषण के उदाहरण:
यदि कोई बॉटनेट लगातार गलत होस्ट हेडर का उपयोग करके पेज का अनुरोध करता है, तो कैश पॉइज़निंग हो सकती है। परिणामी HTML में फिर हमलावर वेबसाइट के लिंक शामिल होंगे जहां वे आपके उपयोगकर्ताओं को फ़िश कर सकते हैं। सबसे पहले दुर्भावनापूर्ण लिंक केवल हैकर को वापस भेजे जाएंगे, लेकिन यदि हैकर पर्याप्त अनुरोध करता है, तो पृष्ठ का दुर्भावनापूर्ण संस्करण आपके कैश में समाप्त हो जाएगा, जहां इसे अन्य उपयोगकर्ताओं को वितरित किया जाएगा।
यदि आप होस्ट हेडर के आधार पर डेटाबेस में लिंक स्टोर करते हैं तो फ़िशिंग हमला हो सकता है। उदाहरण के लिए, मान लें कि आप किसी फ़ोरम में उपयोगकर्ता के प्रोफ़ाइल के लिए निरपेक्ष URL संग्रहीत करते हैं। गलत हेडर का उपयोग करके, एक हैकर को कोई भी व्यक्ति मिल सकता है जो फ़िशिंग साइट पर भेजे जाने के लिए अपने प्रोफ़ाइल लिंक पर क्लिक करता है।
पासवर्ड रीसेट पॉइज़निंग तब हो सकती है जब एक हैकर किसी अन्य उपयोगकर्ता के लिए पासवर्ड रीसेट फॉर्म भरते समय एक दुर्भावनापूर्ण होस्ट हेडर का उपयोग करता है। तब उपयोगकर्ता को एक पासवर्ड रीसेट लिंक वाली एक ईमेल मिलेगी जो फ़िशिंग साइट की ओर ले जाती है।
यहाँ कुछ और दुर्भावनापूर्ण उदाहरण हैं
अतिरिक्त कैविट्स और नोट्स:
- जब usecanonicalname बंद हो जाता है तो
$_SERVER['SERVER_NAME']उसी हेडर के साथ पॉपुलेट $_SERVER['HTTP_HOST']किया जाता है जो वैसे भी (प्लस पोर्ट) का उपयोग करता था। यह अपाचे का डिफ़ॉल्ट सेटअप है। यदि आप या देवोप्स इसे चालू करते हैं, तो आप ठीक हैं - ish - लेकिन क्या आप वास्तव में एक अलग टीम पर भरोसा करना चाहते हैं, या भविष्य में खुद को तीन साल, यह देखना है कि गैर-मामूली विन्यास क्या होगा -डिफ़ॉल्ट मान? हालांकि यह चीजों को सुरक्षित बनाता है, फिर भी मैं इस सेटअप पर भरोसा करने से बचता हूं।
- रेडहैट, हालांकि, डिफ़ॉल्ट रूप से [ स्रोत ] द्वारा usecanonical को चालू करता है ।
- यदि वर्चुअल होस्ट प्रविष्टि में सर्वरएलाइज़ का उपयोग किया जाता है, और उपनामित डोमेन का अनुरोध किया जाता है,
$_SERVER['SERVER_NAME']तो वर्तमान डोमेन वापस नहीं करेगा, लेकिन सर्वरनाम निर्देश का मान लौटाएगा।
- यदि सर्वरनाम को हल नहीं किया जा सकता है, तो ऑपरेटिंग सिस्टम के होस्टनाम कमांड का उपयोग इसके स्थान [स्रोत] में किया जाता है ।
- यदि होस्ट हेडर को छोड़ दिया जाता है, तो सर्वर ऐसा व्यवहार करेगा मानो usecanonical [स्रोत] पर है ।
- अंत में, मैंने सिर्फ अपने स्थानीय सर्वर पर इसका उपयोग करने की कोशिश की, और मेजबानों के हेडर को खराब करने में असमर्थ था। मुझे यकीन नहीं है कि अगर अपाचे के लिए एक अपडेट था जिसने इसे संबोधित किया था, या अगर मैं सिर्फ कुछ गलत कर रहा था। इसके बावजूद, यह हैडर अभी भी उन वातावरणों में शोषक होगा जहां वर्चुअल होस्ट का उपयोग नहीं किया जा रहा है।
लिटिल रैंट:
इस सवाल को हाथ में सुरक्षा समस्याओं के एक भी उल्लेख के बिना सैकड़ों हजारों विचार मिले! यह इस तरह नहीं होना चाहिए, लेकिन सिर्फ इसलिए कि एक स्टैक ओवरफ्लो उत्तर लोकप्रिय है, इसका मतलब यह नहीं है कि यह सुरक्षित है।