एचटीटीपी जैसे सादा टेक्स्ट प्रोटोकॉल, सुनने की सुविधा वाले हमलों के लिए कमज़ोर हो सकते हैं. इन हमलों में, हमलावर ट्रांसमिट किए गए कॉन्टेंट को पढ़ सकता है. अच्छी बात यह है कि ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) प्रोटोकॉल, ट्रैफ़िक को एन्क्रिप्ट (सुरक्षित) कर सकता है. इससे, हमलावरों के लिए इस डेटा का इस्तेमाल करना काफ़ी मुश्किल हो जाता है.
हालांकि, हमलावर एन्क्रिप्ट (सुरक्षित) किए गए कनेक्शन को सादा एचटीटीपी इस्तेमाल करने के लिए मजबूर करके, टीएलएस को गच्चा दे सकते हैं. इस समस्या को हल करने के लिए, एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस) रिस्पॉन्स हेडर को पेश किया गया था. यह हेडर, उपयोगकर्ता के ब्राउज़र को किसी वेबसाइट पर सिर्फ़ टीएलएस का इस्तेमाल करके जाने के लिए मजबूर करता है. साथ ही, यह तय समय के लिए सादा टेक्स्ट एचटीटीपी का इस्तेमाल नहीं करने देता.
Lighthouse ऑडिट पूरा न होने की वजहें
ऑडिट में, HSTS हेडर की मदद से इन समस्याओं को फ़्लैग किया जाएगा:
- अगर कोई एचएसटीएस हेडर नहीं मिला है.
- अगर सुझाए गए डायरेक्टिव में से कोई एक (
max-age
,includedSubDomains
,preload
) मौजूद नहीं है - अगर
max-age
डायरेक्टिव की अवधि एक साल (31,536,000 सेकंड) से कम है. - हेडर को पार्स करते समय सिंटैक्स से जुड़ी गड़बड़ी होने पर, जैसे कि कोई अज्ञात डायरेक्टिव.
एचएसटीएस की बेहतर नीति कॉन्फ़िगर करना
एचएसटीएस हेडर का सबसे सही कॉन्फ़िगरेशन ऐसा दिखता है:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
max-age
डायरेक्टिव से पता चलता है कि उपयोगकर्ता के ब्राउज़र को सिर्फ़ TLS का इस्तेमाल करके, किसी वेबसाइट पर जाने में कितना समय (सेकंड में) लगेगा. इसके बाद, अगर वेबसाइट ने कोई एचएसटीएस हेडर नहीं दिया है या एचटीटीपी से एचटीटीपीएस पर कुछ समय के लिए रीडायरेक्ट किया जा रहा है, तो साइट को फिर से सादे एचटीटीपी का इस्तेमाल करके ऐक्सेस किया जा सकता है.includeSubDomains
डायरेक्टिव सेट करने पर, हेडर को पेज यूआरएल के किसी भी सबडोमेन पर लागू किया जाएगा. उदाहरण के लिए, अगर google.com से भेजा गया HSTS हेडर,includeSubDomains
डायरेक्टिव शामिल करता है, तो mail.google.com पर भी HSTS हेडर लागू हो जाएगा.preload
डायरेक्टिव सेट करने और डोमेन को एचएसटीएस प्रीलोड सेवा को सबमिट करने पर, डोमेन को ब्राउज़र बाइनरी में कंपाइल कर दिया जाएगा. ये बाइनरी, पहले से लोड की गई एचएसटीएस सूची का इस्तेमाल करती हैं, न कि सिर्फ़ Google Chrome का.
HSTS हेडर को रोल आउट करते समय कुछ जोखिम होते हैं. max-age
डायरेक्टिव में सेट किए गए समय के लिए, ऐसी सभी सुविधाएं काम नहीं करेंगी जिनके लिए एन्क्रिप्ट (सुरक्षित) नहीं किए गए एचटीटीपी कनेक्शन की ज़रूरत होती है. अगर preload
डायरेक्टिव लागू किया जाता है, तो हो सकता है कि यह समय और भी ज़्यादा हो.
रोल आउट से जुड़े जोखिमों को कम करने के लिए, हमारा सुझाव है कि आप कुछ लोगों के लिए रिलीज़ करने की सुविधा का इस्तेमाल करें:
छोटे
max-age
से शुरू करके, सिर्फ़includeSubDomains
जोड़ें (preload
नहीं):max-age=3600; includeSubDomains
अगर कूल डाउन पीरियड (जैसे, एक हफ़्ता) के दौरान कोई समस्या नहीं दिखती है, तो
max-age
को बढ़ाएं. उदाहरण के लिए:max-age=604800; includeSubDomains
अगर यह शुरुआती चरण लंबे समय तक (जैसे, तीन महीने) तक सफल रहता है, तो वेबसाइट और उसके सबडोमेन को एचएसटीएस प्रीलोड सूची में जोड़ा जाना चाहिए. साथ ही,
preload
डायरेक्टिव को जोड़ा जाना चाहिए.max-age=63072000; includeSubDomains; preload