Http से https को अप्रत्यक्ष किए बिना https पूरी साइट को फोर्स करें


14

जब मैं अपनी पूरी साइट https बनाने का तरीका खोज रहा था, तब काफी चर्चाएँ हुईं। सबसे ज्यादा जवाब http से https (.htaccess फाइल) को रीडायरेक्ट करना था, जो अच्छा नहीं है, क्योंकि एक ही काम को दो बार (दो रिक्वेस्ट) करना अच्छा नहीं है। इसके अलावा, "बीच में आदमी" पहले http पर लेता है, और मैं चाहता हूं कि मेरी साइट सीधे https पर जाए। क्या आपकी पूरी साइट https बनाने का एक और तरीका है, और यह कैसे करना है? उदाहरण के लिए, जब उपयोगकर्ता example.com में टाइप करता है, तो वह example.com स्वचालित रूप से https पर जाता है, बिना http या किसी अन्य चीज़ से रीडायरेक्ट किए बिना?


अगर आप नहीं चाहते कि लोग https पर पुनर्निर्देशित हों, तो आप इसके बजाय क्या होना चाहते हैं?
माइकल हैम्पटन

@Michael Hampton शायद मैं नौसिखिया सवाल पूछ रहा हूं, लेकिन मैं व्यावहारिक रूप से http को "हटाना" चाहता हूं, और केवल वह चीज मौजूद है जो https है। या यदि यह संभव नहीं है, तो मैं पुनर्निर्देशन का उपयोग कर सकता हूं यदि यह सुरक्षा के लिए पर्याप्त है। मैंने सुना है कि पुनर्निर्देशन http-> https इतना अच्छा नहीं है क्योंकि यह अभी भी http है और पुनर्निर्देशन के दौरान यातायात को बाधित किया जा सकता है।
मार्को टैम्बुरिक

HTTP 301 स्थायी पुनर्निर्देशन आपका मित्र है, बस समय सीमा समाप्त करने के लिए मत भूलना।
मार्सेल

आप बस http को हटा सकते हैं। लेकिन तब, उपयोगकर्ता को सिर्फ एक कनेक्शन से इनकार कर दिया जाता है, अगर वह https: // में प्रवेश नहीं कर रहा है, तो कुछ साइटों के लिए यह बेहतर है, क्योंकि सुरक्षा अधिक है। यदि कोई http संस्करण उपलब्ध है, तो ऐसा हो सकता है कि कुकीज़ को पहले अनुरोध के साथ अनएन्क्रिप्टेड भेजा जाए। एक कंपनी मेल सिस्टम https केवल + उपयोगकर्ता प्रशिक्षण जैसी चीजों के लिए ठीक है, एक सामान्य साइट के लिए आप शायद बहुत सारे आगंतुकों को खो देंगे।
जोसेफ का कहना है कि मोनिका

Afaik यह HTTP2 के साथ संभव हो गया, हालांकि यह अभी भी ssl स्ट्रिपिंग अटैक (नीचे दिए गए उत्तरों में वर्णित) से नहीं बचेगा।
पीटर -

जवाबों:


20

नहीं। आप जादुई रूप से आगंतुक के ब्राउज़र को सही प्रोटोकॉल नहीं बना सकते। एक पुनर्निर्देशन इसे करने का तरीका है।


1
इस उत्तर पर और विस्तार करने के लिए, URL फिर से लिखना और एक 301 स्थिति कोड का उपयोग करने पर विचार करें क्योंकि मार्क हेंडरसन यहाँ बताते हैं: serverfault.com/questions/570288/…
रायन रीज़


22

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security आपके सर्वर को यह इंगित करने की अनुमति देता है कि डोमेन को केवल HTTPS के माध्यम से एक्सेस किया जाना चाहिए। यह केवल बाद के अनुरोधों पर लागू होता है, इसलिए प्रारंभिक HTTP लोड होगा, लेकिन भविष्य के अनुरोध HTTPS को लोड करेंगे भले ही किसी ने स्पष्ट रूप से HTTP टाइप किया हो।

IE इसे अभी तक समर्थन नहीं करता है, लेकिन अन्य सभी बड़ी कंपनियों करते हैं।


यह अभी भी पहले अनुरोध के खिलाफ की रक्षा नहीं करता है।
जेनी डी

3
@ जेनीडी मैंने पहले ही अपने जवाब में कहा था।
ceejayoz

@ जेनीडी आपको "सुरक्षा" से क्या मतलब है? एक MiM http -> https पुनर्निर्देशित के खिलाफ कुछ भी नहीं कर सकता है, जब तक कि वे स्थानीय डीएनएस / रूटिंग के साथ खिलवाड़ नहीं करते और अपने पूरे डोमेन को रोकते हैं। उस स्थिति में, यह वास्तव में मायने नहीं रखता कि आप क्या करते हैं, क्योंकि आपके सर्वर कभी एक्सेस नहीं हो रहे हैं।
लाल चेतावनी

2
@ जेनीडी वेल, एचएसटीएस वास्तव में आपके पोस्ट से बेहतर समाधान है, जो कहता है कि "एक पुनर्निर्देशन यह करने का तरीका है"। पुनर्निर्देशित किसी भी समय MITMed किया जा सकता है। HSTS के साथ एक रीडायरेक्ट केवल प्रति वर्ष एक बार उपयोगकर्ता + ब्राउज़र (या हेडर पर समाप्ति का समय जो भी हो) के लिए MITMed किया जा सकता है - अन्य सभी बार यह अनुरोध नहीं किया जाता है।
ceejayoz

1
@MarkoTamburic कोई कारण नहीं कि आप दोनों को जोड़ नहीं सकते।
सियाजॉय

7

जैसा कि दूसरों ने कहा है, आप उपयोगकर्ताओं को सही प्रोटोकॉल चुनने के लिए मजबूर नहीं कर सकते। लेकिन जब उपयोगकर्ता HTTP का उपयोग करने की कोशिश करता है, तो आपको क्या करना चाहिए? एक रीडायरेक्ट भी अपर्याप्त है, क्योंकि आपके और क्लाइंट के बीच बैठा एक हमलावर रीडायरेक्ट को बाधित कर सकता है, इसलिए क्लाइंट इसे कभी नहीं देखता है। क्लाइंट सादे HTTP भेजना जारी रखेगा, और हमलावर एसएसएल परत को सर्वर ( एसएसएल स्ट्रिपिंग हमले ) से दूर कर देगा ।

इसे रोकने का एकमात्र निश्चित तरीका है कि HTTP की सेवा बिल्कुल न करें । पोर्ट 80 पर जवाब न दें, शायद एक सादे पाठ पृष्ठ की सेवा के लिए उपयोगकर्ता को HTTPS के साथ फिर से प्रयास करने के लिए निर्देश दें (लेकिन एक लिंक प्रदान नहीं कर रहा है, जिसे हमलावर हेरफेर कर सकता है)। यह उपयोगकर्ता को https://अपने ब्राउज़र में टाइप करने के लिए मजबूर करेगा , इसलिए वे SSL के साथ कनेक्शन शुरू करेंगे और MITM हमले को रोकेंगे।


3
यह एक व्यापार बंद है, हालांकि, अधिकांश उपयोगकर्ता टाइप करने के लिए नहीं जा रहे हैं https://। इसके बजाय, वे "हुह, साइट के टूटे हुए" कहने और छोड़ने जा रहे हैं। सर्वोत्तम स्थिति परिदृश्य www.example.comHTTP और HTTPS दोनों का जवाब हो सकता है , लेकिन एप्लिकेशन admin.example.comकेवल HTTPS के साथ कुछ इस तरह से चल रहा है ।
ceejayoz

माना। व्यवहार में, लगभग कोई भी ऐसा नहीं करता है।
एंड्रयू Schulman

मैं वास्तव में नहीं देखता कि कोई और अधिक MiM प्रूफ कैसे होगा। यदि बीच का आदमी आपके हाइपरलिंक को कहीं और इंगित करने के लिए संशोधित कर सकता है, तो इसका मतलब है कि वह उपयोगकर्ता के आने वाले पैकेटों के नियंत्रण में है। वह बस अपनी साइट पर आसानी से रीडायरेक्ट कर सकता है, या जो भी हाइपरलिंक चाहता है उसमें जोड़ सकता है, भले ही साइट को देखने के लिए माना जाए।
लाल चेतावनी

लेकिन नहीं, सिद्धांत रूप में, अगर ग्राहक SSL के साथ कनेक्शन शुरू करता है।
एंड्रयू शुलमैन

3
यह सच है - लेकिन अगर ग्राहक एसएसएल के साथ पहल करता है, तो ओपी को कोई समस्या नहीं है। उनका मुद्दा तब है जब वे एसएसएल के बिना आरंभ करते हैं, और यदि एमवाई सक्रिय रूप से तोड़फोड़ कर रहा है तो उन्हें मज़बूती से एसएसएल में लाने का कोई रास्ता नहीं है।
लाल चेतावनी

1

1

यहाँ विशेष रूप से उल्लेखित हमले को रोकने के लिए ceejayoz के पास सबसे अच्छा जवाब है, लेकिन मैं यह भी बताना चाहता हूं कि यहां बहुत सारे लोग गायब हैं जो मूल रूप से HTTP का दूसरा हिस्सा पहले से ही लगा हुआ है। आप एक स्थायी 301 रीडायरेक्ट करना चाहते हैं। यह क्लाइंट को नए पते के लिए आगे अनुरोध करने के लिए कहता है। तो हाँ, अगर कोई गलत URL टाइप करता है तो वे 2 अनुरोध BUT करेंगे, भविष्य में, एक अच्छा ग्राहक उस URL के अनुरोधों का पता लगाने और किसी भी अधिक बर्बाद अनुरोध को रोकने के बजाय सही अनुरोध करने वाला है। समस्या यह है कि यह केवल उस सटीक URL के लिए है। HSTS ने यह कहते हुए इस योजना में सुधार किया, 'अगले n सेकंड के लिए भी इस डोमेन से किसी भी गैर-सुरक्षित कनेक्शन की अनुमति नहीं है'।

उपयोगकर्ताओं को असुरक्षित स्थानों पर संवेदनशील साइटों पर नहीं जाना चाहिए। उन्हें विशेष रूप से असुरक्षित स्थानों पर उनके लिए साइनअप नहीं करना चाहिए। ये मूल उपयोगकर्ता सुरक्षा प्रधानाचार्य हैं, जिन्हें केवल 'जैसे अविश्वसनीय स्रोतों से संलग्नक नहीं खोलना' सिखाया जाना चाहिए। जो वास्तव में उन साइटों के लिए MiM हमलों को रोकने के लिए सबसे अच्छा जवाब है, जिन्हें कभी दौरा नहीं किया गया है।

एक साइड नोट के रूप में, कुछ ब्राउज़र इस पर सुधार करते हुए यह भी कहते हैं कि कुछ ज्ञात साइटें हमेशा एचएसटीएस का उपयोग करती हैं। दुर्भाग्य से, आप इस सूची में आसानी से खुद को जोड़ नहीं सकते।

आगे पढ़े: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/

http://dev.chromium.org/sts

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.