सभी लेख

HTTP Basic Auth: Authorization हेडर कैसे बनता है

HTTP Basic Authentication किसी संसाधन को पासवर्ड से सुरक्षित करने का सबसे पुराना और सबसे सरल तरीका है — ब्राउज़र यूज़रनेम और पासवर्ड माँगता है, और वे हर रिक्वेस्ट के साथ सर्वर को भेजे जाते हैं। यही सादगी इसकी सबसे बड़ी कमज़ोरी भी है।

Authorization हेडर कैसे बनता है

यूज़रनेम और पासवर्ड को कोलन (username:password) से जोड़ा जाता है, फिर पूरी स्ट्रिंग को Base64 में एन्कोड करके Authorization: Basic <encoded_string> हेडर में डाला जाता है। पहली सफल लॉगिन के बाद ब्राउज़र यह हेडर हर अगली रिक्वेस्ट में अपने-आप जोड़ देता है।

Base64 सुरक्षा क्यों नहीं है

Base64 एक एन्कोडिंग स्कीम है, एन्क्रिप्शन नहीं — कोई भी बिना किसी key के इस स्ट्रिंग को कुछ ही सेकंड में वापस username:password में डिकोड कर सकता है। अगर रिक्वेस्ट कहीं बीच में इंटरसेप्ट हो जाए (जैसे किसी असुरक्षित पब्लिक Wi-Fi पर), तो क्रेडेंशियल्स तुरंत उजागर हो जाते हैं।

देवनागरी यूज़रनेम और Base64 का आकार

Base64 दरअसल कैरेक्टर नहीं, बल्कि बाइट्स को एन्कोड करता है, इसलिए मूल स्ट्रिंग की एन्कोडिंग मायने रखती है। लैटिन अक्षर UTF-8 में सिर्फ़ 1 बाइट लेता है, जबकि देवनागरी का हर अक्षर 3 बाइट लेता है — यानी अगर कोई पासवर्ड हिंदी में पासवर्ड123 जैसा लिखा जाए, तो उसका Base64 टोकन उतने ही कैरेक्टर वाले अंग्रेज़ी पासवर्ड से काफ़ी लंबा निकलेगा। कई पुराने HTTP क्लाइंट और API टूल non-ASCII क्रेडेंशियल्स को ठीक से हैंडल नहीं करते थे, इसीलिए RFC 7617 (2015) में एक वैकल्पिक charset="UTF-8" पैरामीटर जोड़ा गया ताकि क्लाइंट और सर्वर इस बारे में सहमत हों।

यह किस काम आता है

  • डेवलपमेंट के दौरान किसी staging सर्वर या internal टूल को जल्दी से पासवर्ड-प्रोटेक्ट करना।
  • curl या Postman से API टेस्ट करने के लिए सही Authorization हेडर बनाना।
  • यह समझना कि प्लेन HTTP पर Basic Auth को गंभीर सुरक्षा खामी क्यों माना जाता है।

Basic Auth में कोई built-in लॉगआउट नहीं है

ब्राउज़र क्रेडेंशियल्स को कैश कर लेता है और टैब बंद होने तक उसी origin पर हर अगली रिक्वेस्ट में Authorization हेडर अपने-आप जोड़ता रहता है — प्रोटोकॉल में कोई standard "लॉगआउट" बटन होता ही नहीं। यूज़र को ज़बरदस्ती लॉगआउट करने के लिए सर्वर तरकीबें अपनाते हैं: जानबूझकर अलग realm वैल्यू के साथ 401 लौटाना, या फिर यूज़र के खुद सारे टैब बंद करने पर निर्भर रहना।

टूल आज़माएँ