Defaults.Exposed › सुधार › HSTS (Strict-Transport-Security)
HSTS (Strict-Transport-Security) को कैसे ठीक करें
HSTS एक-पंक्ति निर्देश है जो आपकी वेबसाइट हर ब्राउज़र को देती है: 'हमेशा मुझ तक सुरक्षित, encrypted connection पर आओ — कभी असुरक्षित पर नहीं।' इसके बिना, आपका padlock साझा WiFi पर चुपचाप छीना जा सकता है, और आपकी साइट पर पहली विज़िट उजागर होती है।
आपके व्यवसाय के लिए मुख्य बात: HTTPS (padlock) होना इसे लागू करने जैसा नहीं है। HSTS के बिना, एक हमलावर उसी WiFi पर जो आपके ग्राहक के साथ है, connection को सादे, अनएन्क्रिप्टेड HTTP तक चुपचाप downgrade कर सकता है — login, कार्ड विवरण और form data capture करते हुए जब ग्राहक को कुछ भी गलत नहीं दिखता। आपका SSL certificate, जिसके लिए आप शायद भुगतान कर रहे हैं, bypass हो जाता है। सुधार मुफ्त है और आपकी साइट चलाने वाले किसी के लिए लगभग 15 मिनट लेता है।
यह आपको क्या खर्च कर सकता है
- कैफे, होटल, एयरपोर्ट या कॉन्फ़्रेंस WiFi पर ग्राहकों का आपकी साइट से connection चुपचाप downgrade हो सकता है और उनका डेटा पढ़ा जा सकता है।
- आपने HTTPS के लिए भुगतान किया है और padlock है, लेकिन HSTS के बिना हमलावर इसके आसपास बस route कर सकते हैं।
- आपकी साइट पर पहली विज़िट (HTTPS पर किसी redirect से पहले) वह कमजोर बिंदु है जिसे हमलावर target करते हैं।
- एक सुरक्षा प्रश्नावली, cyber-insurance form या उद्यम खरीदार की checklist 'no HSTS' flag करती है।
- मान गलत सेट करें (बहुत छोटा) और आपको दोनों का बुरा मिलता है: यह configured दिखता है लेकिन लगभग कोई वास्तविक सुरक्षा नहीं देता।
यह क्यों मायने रखता है। HTTPS एक connection को encrypt करता है एक बार जब यह encrypted है — लेकिन यह browsers को इसे उपयोग करने के लिए force नहीं करता। हमलावर उस gap को 'SSL stripping' के साथ exploit करते हैं: किसी भी साझा नेटवर्क पर वे चुपचाप visitor को असुरक्षित HTTP पर रखते हैं, सब कुछ पढ़ते हैं। HSTS browser को आपके डोमेन के लिए सादे HTTP को पूरी तरह से मना करने के लिए कहता है। यह हमारी स्कोरिंग पर वास्तविक अंकों के योग्य है क्योंकि गायब या बहुत-छोटा मान हर visitor को सार्वजनिक WiFi पर उजागर छोड़ता है।
इसे कैसे ठीक करें, चरण दर चरण
- पहले valid HTTPS serve करें. HSTS केवल तभी मायने रखता है जब आपकी साइट HTTPS पर valid certificate के साथ सही ढंग से लोड होती है।
- हेडर जोड़ें. HTTPS responses पर Strict-Transport-Security: max-age=31536000; includeSubDomains भेजें।
- एक छोटे max-age से शुरू करें. यदि अनिश्चित हों, तो एक छोटे max-age से शुरू करें, पुष्टि करें कि subdomains अभी भी काम करते हैं, फिर इसे एक वर्ष तक बढ़ाएं।
- preload पर विचार करें. एक बार includeSubDomains के साथ stable होने पर, preload जोड़ें और browser preload list में submit करें।
- सत्यापित करें कि यह काम किया. पुनः जांचें यह पुष्टि करने के लिए कि हेडर HTTPS responses पर मौजूद है।
यह क्या है, सरल शब्दों में
आपके पास लगभग निश्चित रूप से HTTPS है — browser bar में छोटा padlock। अच्छा। लेकिन यहाँ वह भाग है जो लगभग कोई नहीं बताता: HTTPS होना इसे force करने जैसा नहीं है।
HTTPS एक connection को encrypt करता है एक बार जब browser इसे उपयोग करने का फैसला करता है। HSTS — short for HTTP Strict Transport Security — वह निर्देश है जो browser को हमेशा इसे उपयोग करने के लिए बनाता है। यह एक एकल, अदृश्य पंक्ति है जो आपकी वेबसाइट हर visitor को भेजती है जो प्रभावी रूप से कहती है:
“अब से, मेरे domain के लिए, केवल secure connection पर मुझसे बात करो। कभी असुरक्षित पर नहीं।”
HSTS के बिना, वह “हमेशा secure version उपयोग करें” नियम मौजूद नहीं है — और हमलावरों को पता है कि gap को कैसे exploit करें।
यह आपको क्या नुकसान पहुंचा सकता है
-
Coffee-shop checkout। एक ग्राहक कैफे WiFi पर आपकी shop खोलता है। उसी नेटवर्क पर एक हमलावर एक मुफ्त, प्रसिद्ध tool चलाता है जो ग्राहक को HTTPS के बजाय plain HTTP पर रखता है। ग्राहक को आपकी normal site दिखती है और अपने कार्ड विवरण टाइप करता है। हमलावर हर keystroke पढ़ता है।
-
Travelling employee। एक staff member hotel या airport से आपके admin panel या webmail में login करता है। वही downgrade trick उनके username और password capture करती है।
-
रुका सौदा। एक बड़ा ग्राहक हस्ताक्षर करने से पहले अपनी standard security questionnaire भेजता है। एक पंक्ति पूछती है: “क्या आपकी वेबसाइट HSTS के माध्यम से HTTPS enforce करती है?” आपके IT contact को “नहीं” जवाब देना होता है।
-
Cyber-insurance या compliance जाँच। एक insurer का scan, या एक auditor, गायब हेडर flag करता है।
यह वास्तव में क्या है
जब एक browser आपकी वेबसाइट से एक page request करता है, तो आपका server page के साथ अदृश्य “headers” भी भेजता है। HSTS उनमें से एक है:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
तीन भाग मायने रखते हैं:
max-age— कितने समय (seconds में) browser को HTTPS force करना याद रखना चाहिए।31536000एक वर्ष है।includeSubDomains— नियम को हर subdomain (shop.,app.,mail.आदि) तक extend करें।preload— अपना domain browser में built-in एक master list में opt करें।
“पहली विज़िट” क्यों मायने रखती है
HSTS की एक inherent सीमा है: एक browser नियम तभी मानता है जब उसने हेडर कम से कम एक बार देखा हो। इसलिए एक brand-new visitor की पहली connection अभी भी exposure का एक tiny window है।
अच्छा कैसा दिखता है — और यह कैसे score होता है
| max-age मान | यह क्या मतलब है | परिणाम |
|---|---|---|
| 1 वर्ष या अधिक (≥ 31536000) | उत्कृष्ट — अनुशंसित सेटिंग | Full marks |
| 6 महीने या अधिक (≥ 15768000) | अच्छा, लेकिन पूरे वर्ष नहीं | Partial |
| 1 दिन या अधिक (≥ 86400) | कमज़ोर — भरोसेमंद होने के लिए बहुत छोटा | Low / partial |
| 1 दिन से कम, या कोई हेडर नहीं | Effectively कोई सुरक्षा नहीं | Fail (high severity) |
इसे कैसे ठीक करें (मुफ्त, ~15 मिनट)
इस अनुभाग को जो भी आपकी वेबसाइट चलाता है उसे सौंपें — सुधार मुफ्त है।
एक महत्वपूर्ण ordering नियम: HSTS sticky है। इसलिए पहले पुष्टि करें कि HTTPS आपकी मुख्य साइट और हर subdomain पर सही तरीके से काम करता है। सुरक्षित रास्ता है: एक छोटे मान के साथ test करें → पुष्टि करें कि कुछ नहीं टूटता → एक वर्ष तक बढ़ाएं।
Cloudflare: SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) और enable करें।
Nginx: अपने HTTPS server block के अंदर जोड़ें:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache: mod_headers ensure करें, फिर अपने HTTPS virtual host में जोड़ें:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Microsoft IIS: web.config में <customHeaders> के अंदर जोड़ें:
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
पहले max-age=300 (5 मिनट) के साथ test करें। पुष्टि करें कि site सही तरीके से load होती है। फिर max-age=31536000 (एक वर्ष) तक बढ़ाएं।
सामान्य गलतियाँ
max-ageबहुत छोटा सेट करना। कुछ मिनट या घंटे configured दिखता है लेकिन लगभग कोई सुरक्षा नहीं देता।- Subdomains HTTPS-ready होने से पहले
includeSubDomainsचालू करना। - HSTS जोड़ना लेकिन HTTP-to-HTTPS redirect नहीं होना।
- Thorough होने के लिए सीधे
preloadपर जाना। Preload को undo करना मुश्किल है। - यह मानना कि padlock का मतलब है कि आप covered हैं।
अक्सर पूछे जाने वाले प्रश्न
हमारे पास पहले से HTTPS है और padlock दिखता है। क्या वह पर्याप्त नहीं है?
नहीं — और यह सबसे आम गलतफहमी है। Padlock का मतलब है कि एक connection encrypt *हो सकता है*; यह browsers को encrypted version उपयोग करने के लिए force नहीं करता। HSTS वह निर्देश है जो 'केवल encrypted' को अनिवार्य बनाता है। HSTS के बिना HTTPS एक locked door है जो latched नहीं है।
क्या यह चालू करना महंगा या जोखिम भरा है?
सुधार मुफ्त है — यह आपके वेब सर्वर में एक पंक्ति या आपके CDN में एक toggle है। एक वास्तविक सावधानी: HSTS sticky है। एक बार जब एक browser इसे देखता है, तो यह आपके domain के लिए सादे HTTP मना करेगा जब तक आपने specify किया है। इसलिए आगे बढ़ने से पहले HTTPS आपकी मुख्य साइट और हर subdomain पर काम करता है यह सुनिश्चित करें।
'अच्छा' वास्तव में कैसा दिखता है?
कम से कम एक वर्ष (31536000 seconds) का max-age। हमारी जाँच एक वर्ष या उससे अधिक पर full marks देती है, छह महीने पर partial, एक दिन पर weak/partial, और एक दिन से कम किसी भी चीज़ को effectively absent मानती है।
'preload' क्या है और क्या हमें इसकी जरूरत है?
HSTS केवल एक visitor की सुरक्षा करता है AFTER उनके browser ने हेडर एक बार देखा हो — इसलिए एक brand-new visitor की पहली request अभी भी एक छोटी window है। HSTS preload list, Chrome, Firefox, Safari और Edge में built-in, उस window को पहले से बंद करती है।
हम Squarespace / Wix / Shopify पर हैं — क्या हमें कुछ भी करने की जरूरत है?
अधिकांश fully-hosted website builders HTTPS enforce करते हैं और अक्सर आपके लिए HSTS सेट करते हैं। जाँच run करें: यदि यह pass होती है, तो आप पूरे हो गए।
यदि हम इसे ठीक नहीं करते, तो क्या यह हमारा ग्रेड कम करता है?
हाँ। HSTS एक scored web-security जाँच है, सूचनात्मक नहीं — एक गायब या बहुत-छोटा हेडर अंक खर्च करता है और high severity रेट किया जाता है।