security सभी HTTP अनुरोधों को HTTPS पर रीडायरेक्ट कैसे करें




.htaccess redirect (12)

मैं अपनी साइट पर सभी असुरक्षित HTTP अनुरोधों को रीडायरेक्ट करने का प्रयास कर रहा हूं (उदाहरण के लिए http://www.example.com ) HTTPS ( https://www.example.com ) पर। मैं PHP बीटीडब्ल्यू का उपयोग कर रहा हूँ। क्या मैं इसे .htaccess में कर सकता हूं?

https://code.i-harness.com



.htaccess फ़ाइल में निम्न कोड जोड़ें:

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://[your domain name]%{REQUEST_URI} [R,L]

जहां [आपका डोमेन नाम] आपकी वेबसाइट का डोमेन नाम है।

आप उपरोक्त कोड की अंतिम पंक्ति को प्रतिस्थापित करके अपने डोमेन नाम से विशिष्ट फ़ोल्डर को भी रीडायरेक्ट कर सकते हैं:

RewriteRule ^ https://[your domain name]/[directory name]%{REQUEST_URI} [R,L]

आपकी .htaccess फ़ाइल में निम्न कोड का उपयोग स्वचालित रूप से आगंतुकों को आपकी साइट के HTTPS संस्करण पर रीडायरेक्ट करता है:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

यदि आपके पास मौजूदा .htaccess फ़ाइल है:

RewriteEngine चालू डुप्लिकेट न करें।

सुनिश्चित करें कि रिवाइटकंड और रीवाइटरूल शुरू होने वाली रेखाएं पहले से ही मौजूदा रीवाइटइंजिन ऑन का पालन करें।


इस समस्या का एक अलग किनारा तब होता है जब लोड बैलेंसर खेल में आता है।

स्थिति निम्नानुसार है: - ब्राउज़र से लोड बैलेंसर तक ट्रैफिक, और बैक, होना चाहिए (होना चाहिए) एचटीटीपीएस - लोड बैलेंसर और वास्तविक वेब सर्वर के बीच यातायात HTTP है।

इसलिए, PHP या अपाचे में सभी सर्वर अनुरोध चर दिखाते हैं कि कनेक्शन सिर्फ HTTP है। और सर्वर पर HTTP और HTTPS निर्देशिका समान हैं।

अनुमोदित उत्तर में पुनर्लेखन काम नहीं करता है। यह या तो एक लूप देता है या यह सिर्फ काम नहीं करता है।

प्रश्न यह है कि लोड लोडर पर यह कैसे काम करें।

(या लोड बैलेंसर गलत कॉन्फ़िगर किया गया है। मैं यही उम्मीद कर रहा हूं क्योंकि मैं समस्या को वेबहोस्टिंग कंपनी पर ले जा सकता हूं :-))


जैसा कि मैं इस सवाल में कह रहा था, मैं सुझाव दूंगा कि आप सभी HTTP अनुरोधों को अपने HTTPS समकक्ष रूप से समेकित करने से बचें, क्योंकि इससे आपको सुरक्षा का झूठा प्रभाव हो सकता है। इसके बजाए, आपको शायद अपनी HTTP साइट की "रूट" को अपनी HTTPS साइट की रूट पर रीडायरेक्ट करना चाहिए और वहां से लिंक, केवल HTTPS तक।

समस्या यह है कि अगर HTTPS साइट पर कुछ लिंक या फॉर्म क्लाइंट को HTTP साइट पर अनुरोध भेजता है, तो इसकी सामग्री रीडायरेक्शन से पहले दिखाई देगी।

उदाहरण के लिए, यदि आपके पृष्ठों में से एक एचटीटीपीएस पर सेवा करता है तो एक फॉर्म है जो <form action="http://example.com/doSomething"> कहता है और कुछ डेटा भेजता है जिसे स्पष्ट रूप से नहीं भेजा जाना चाहिए, ब्राउज़र पहले भेज देगा HTTP अनुरोध पर पूर्ण अनुरोध (इकाई सहित, यदि यह एक पोस्ट है)। पुनर्निर्देशन तुरंत ब्राउज़र पर भेजा जाएगा और, चूंकि बड़ी संख्या में उपयोगकर्ता चेतावनियों को अक्षम या अनदेखा करते हैं, इसलिए इसे अनदेखा होने की संभावना है।

बेशक, एचटीटीपीएस साइट पर होने वाले लिंक प्रदान करने की गलती, लेकिन HTTP साइट के लिए होने वाली अंतराल के कारण आप एचटीटीपीएस साइट के समान आईपी पते पर HTTP पोर्ट पर कुछ सुन सकते हैं। हालांकि, मुझे लगता है कि दोनों साइटों को "दर्पण" के रूप में रखना केवल गलतियों को करने की संभावनाओं को बढ़ाता है, क्योंकि आप यह धारणा कर सकते हैं कि यह उपयोगकर्ता को HTTPS पर रीडायरेक्ट करके स्वयं को स्वतः सही कर देगा, जबकि यह अक्सर बहुत देर हो चुकी है। ( इस सवाल में समान चर्चाएं थीं )


पुनर्निर्देशन के लिए उपरोक्त समझाया गया सब कुछ करें। बस अपने हेडर पर "HTTP सख्त परिवहन सुरक्षा" जोड़ें। यह मध्य हमले में आदमी से बच जाएगा।

उदाहरण के लिए अपनी अपाचे कॉन्फ़िगरेशन फ़ाइल (/etc/apache2/sites-enabled/website.conf और /etc/apache2/httpd.conf) संपादित करें और अपने वर्चुअलहोस्ट में निम्न जोड़ें:

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so

<VirtualHost 67.89.123.45:443>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security


मुझे पता चला कि डोमेन पर https और www का सबसे अच्छा तरीका है

RewriteCond %{HTTPS} off 
RewriteCond %{HTTPS_HOST} !^www.cheapcarhire.gr$ [NC]
RewriteRule ^(.*)$ https://www.cheapcarhire.gr/$1 [L,R=301]

मैं 301 रीडायरेक्ट के साथ अनुशंसा करता हूं:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

यदि आप ऐसी परिस्थिति में हैं जहां आप सीधे अपनी साइट के लिए अपाचे कॉन्फ़िगरेशन तक नहीं पहुंच पा रहे हैं, तो इस होस्ट में कई होस्ट किए गए प्लेटफॉर्म अभी भी प्रतिबंधित हैं, तो मैं वास्तव में दो-चरणीय दृष्टिकोण की अनुशंसा करता हूं। अपाचे स्वयं दस्तावेज़ का कारण है कि आपको एचटीटीपीएस से HTTP के लिए mod_rewrite पर पहले और सबसे पहले अपने कॉन्फ़िगरेशन विकल्पों का उपयोग करना चाहिए।

सबसे पहले, जैसा ऊपर बताया गया है, आप अपना .htaccess mod_rewrite नियम (ओं) सेट अप करेंगे:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

फिर, अपनी PHP फ़ाइल में (आपको ऐसा करने की ज़रूरत है जहां यह आपकी स्थिति के लिए उपयुक्त होगा, कुछ साइटें एक ही PHP फ़ाइल के माध्यम से सभी अनुरोधों को फ़नल कर देगी, अन्य अपनी ज़रूरतों के आधार पर विभिन्न पृष्ठों की सेवा करेंगे और अनुरोध किया जा रहा है ):

<?php if ($_SERVER['HTTPS'] != 'on') { exit(1); } ?>

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

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


यह एचटीएमएल रीडायरेक्ट दृष्टिकोण है जो यह काम करता है लेकिन सर्वोत्तम नहीं है।

 <meta http-equiv="Refresh" content="0;URL=https://www.example.com" />

PHP दृष्टिकोण

<?php
function redirectTohttps() {
    if ($_SERVER['HTTPS']!="on") {
        $redirect= "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        header("Location:$redirect"); 
    } 
}
?>

.htaccess दृष्टिकोण

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

से कॉपी किया गया: www.letuslook.org


सभी http अनुरोधों को https रीडायरेक्ट करने के लिए, आप इसका उपयोग कर सकते हैं:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

यदि मॉड-रीराइट सक्षम नहीं है और आप अपाचे 2.4 पर हैं, तो आप https अनुरोधों को https पर रीडायरेक्ट करने के निर्देश के अंदर एक Redirect का भी उपयोग कर सकते हैं।

अपाचे 2.4।

<if "%{HTTPS} !~ /on/">
Redirect / https://www.example.com/
</if>

अपाचे दस्तावेज़ एक पुनर्लेखन का उपयोग करने के खिलाफ अनुशंसा करते हैं:

http यूआरएल को https रीडायरेक्ट करने के लिए, निम्न कार्य करें:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost>

इस स्निपेट को मुख्य सर्वर कॉन्फ़िगरेशन फ़ाइल में जाना चाहिए, प्रश्न में पूछे गए .htaccess में नहीं

यह लेख शायद पूछे जाने और उत्तर देने के बाद ही आया होगा, लेकिन यह जाने का वर्तमान तरीका प्रतीत होता है।





https