আমি কীভাবে ব্যবহারকারীদের HTTP এর পরিবর্তে HTTPS- র মাধ্যমে আমার পৃষ্ঠা অ্যাক্সেস করতে বাধ্য করতে পারি?


137

আমি মাত্র একটি পৃষ্ঠা পেয়েছি যা এইচটিটিপিএস পৃষ্ঠা (অ্যাপাচে পিএইচপি) হিসাবে অ্যাক্সেস করতে বাধ্য করতে চাই। পুরো ডিরেক্টরিটি HTTPS প্রয়োজন না করে আমি কীভাবে এটি করব? অথবা, আপনি যদি কোনও HTTP পৃষ্ঠা থেকে কোনও HTTPS পৃষ্ঠায় একটি ফর্ম জমা দেন, এটি কি এটি HTTP এর পরিবর্তে HTTPS দ্বারা প্রেরণ করে?

এখানে আমার উদাহরণ:

http://www.example.com/some-page.php

আমি এটির মাধ্যমে কেবল এটি অ্যাক্সেস করা চাই want

https://www.example.com/some-page.php

অবশ্যই, আমি এই পৃষ্ঠার সমস্ত লিঙ্ক এইচটিটিপিএস সংস্করণে নির্দেশিত রাখতে পারি, তবে এটি উদ্দেশ্য করে এইচটিটিপি এর মাধ্যমে এটি অ্যাক্সেস করা থেকে কিছু বোকা থামায় না ...

আমার মনে হয়েছে যে এইচটিটিপিএস সংস্করণটি তারা অ্যাক্সেস করছে তা নিশ্চিত করার জন্য পিএইচপি ফাইলের শিরোনামে একটি জিনিস পুনর্নির্দেশের পদক্ষেপ নিচ্ছে:

if($_SERVER["SCRIPT_URI"] == "http://www.example.com/some-page.php"){
  header('Location: https://www.example.com/some-page.php');
}

কিন্তু এটি সঠিক উপায় হতে পারে না, তাই না?



3
আপনার সমস্ত পৃষ্ঠার জন্য কেবল এসএসএল প্রয়োজন নেই কেন এমন কোনও কারণ আছে?
তাহান

উত্তর:


177

আমি এর আগে যেভাবে এটি করেছি তা মূলত আপনি যা লিখেছেন তার মতো তবে কোনও হার্ডকোডযুক্ত মান নেই:

যদি ($ _ সার্ভার ["HTTPS"]! = "চালু")
{
    শিরোনাম ("অবস্থান: https: //"। $ _SERVER ["HTTP_HOST"]। $ _SERVER ["REQUEST_URI"]);
    থেকে প্রস্থান ();
}

15
পুনর্নির্দেশের পরে স্ক্রিপ্টটি ছাড়ার বিষয়টি নিশ্চিত করতে আপনি প্রস্থান কল করতে ভুলে গেছেন। আমি সাধারণত একটি এসএসএল এসএসএল নামে একটি ফাংশন এ গুটিয়ে রাখি। আমি এনক্রিপ্ট করা চাই যে কোনও পৃষ্ঠার শীর্ষে এই কল করতে পারেন।
জেসি ওয়েইগার্ট

31
(empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on")পিএইচপি বিজ্ঞপ্তি ঠিক করতে হবে তা পরিবর্তন করুন ।
dave1010

$_SERVER[]ভেরিয়েবলগুলি কি ব্যবহারকারীদের হস্তক্ষেপে পরিবর্তনযোগ্য / অরক্ষিত নয় ?
আরিয়ান ফুর্তোষ

@ আরিয়ানফার্তোষের উত্স?
জন

3
@ আরিয়ানফুরটোশ কিছু ক্লায়েন্টের শিরোনাম থেকে নেওয়া হয়, যেমন HTTP_X_FORWARDED, এবং কারসাজি করা যায় তবে অন্যরা পছন্দ করে HTTPSবা SERVER_PORTসরাসরি ওয়েব সার্ভার থেকে সেট করা থাকে এবং সাধারণত নিরাপদ থাকতে হবে।
মাহন

46

আপনি এটি অ্যাপাচিতে একটি নির্দেশিকা এবং মোড_উইরাইট দিয়ে করতে পারেন:

<Location /buyCrap.php>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Location>

আপনি চাইলে নিয়মিত এক্সপ্রেশন ব্যবহার করে আপনি সময়ের সাথে অবস্থানটি আরও স্মার্ট করে তুলতে পারেন।


6
কোথায় রাখবে? .htaccess ফাইল?

1
"কোয়েরি স্ট্রিং" (যেমন? পৃষ্ঠা = 1 এবং আইডি = 41 ইত্যাদি) কি REQUEST_URI অন্তর্ভুক্ত করে না? এটি অ্যাপাচি ডকুমেন্টেশন যা বলে ... তাই যদি আমি সাইট. com/index.php?page= 1& id=12 অ্যাক্সেস করার চেষ্টা করি তবে আমি সাইট. com
রোল্ফ

2
অ্যাপাচি ডকুমেন্টেশন থেকে: REQUEST_URI অনুরোধ করা ইউআরআই এর পাথ উপাদান যেমন "/index.html"। এটি উল্লেখযোগ্যভাবে ক্যোরির স্ট্রিং বাদ দেয় যা এটির নিজস্ব ভেরিয়েবল হিসাবে উপস্থিত রয়েছে QUERY_STRING। সুতরাং আপনাকে REQUEST_URI
রল্ফ

2
এটিকে পুনর্নির্দেশ করতে আপনার পরে [আর] ফ্ল্যাগও যুক্ত করতে হবে
রল্ফ

40

আপনার ক্লায়েন্টকে এইচটিটিপিএসকে কঠোর পরিবহন সুরক্ষা (এইচএসটিএস) শিরোনাম সহ সর্বদা অনুরোধ করতে বাধ্য করা উচিত :

// Use HTTP Strict Transport Security to force client to use secure connections only
$use_sts = true;

// iis sets HTTPS to 'off' for non-SSL requests
if ($use_sts && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    header('Strict-Transport-Security: max-age=31536000');
} elseif ($use_sts) {
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
    // we are in cleartext at the moment, prevent further execution and output
    die();
}

দয়া করে নোট করুন যে এইচএসটিএস বেশিরভাগ আধুনিক ব্রাউজারগুলিতে সমর্থিত তবে সর্বজনীন নয়। সুতরাং উপরের যুক্তিটি HTTP- তে শেষ না হয়ে সমর্থন ছাড়াই ব্যবহারকারীকে ম্যানুয়ালি পুনঃনির্দেশ করে এবং তারপরে HSTS শিরোনাম সেট করে যাতে আরও ক্লায়েন্টের অনুরোধগুলি সম্ভব হলে ব্রাউজার দ্বারা পুনঃনির্দেশ করা উচিত।


আমি অবাক হয়েছি অন্য উত্তরগুলির মধ্যে এই শিরোনামটি অন্তর্ভুক্ত নয়, এটি বেশ গুরুত্বপূর্ণ ... তাদের দুটিটির সংমিশ্রনের জন্য কোনও সমস্যা?
কেইসার

না ... আপনি সবসময় এইচটিটিপিএস চাইলে আপনি অবশ্যই অবশ্যই সেই শিরোনামটি সেট করতে পারেন। আপনি পুনঃনির্দেশের আগে এবং পরে এটি সেট করা এটি কেবল ধরণের রিয়ন্ডান্ট। সামঞ্জস্যতা আরও সঠিকভাবে ব্যাখ্যা করতে আমি উপরে আমার প্রতিক্রিয়াটি সংশোধন করেছি।
জ্যাকব সোয়ার্টউড

1
(মূল মন্তব্যটি পুনরায় পাঠানো) "কেবলমাত্র একটি পৃষ্ঠা" এর নির্দিষ্ট প্রয়োজনীয়তাটি আমি লক্ষ্য করিনি। এইচএসটিএস সমস্ত পৃষ্ঠায় প্রযোজ্য হবে; আমার উত্তরটি প্রযুক্তিগতভাবে ভুল।
জ্যাকব সোয়ার্টউড

4
এফওয়াইআই, স্ট্যান্ডার্ড আরএফসি section section৯7 ধারা .2.২ বলছে "একটি এইচএসটিএস হোস্টকে এইচটিটিপি শিরোনাম ক্ষেত্রটি নিরাপদ নয় এমন পরিবহন সম্পর্কে জানানো এইচটিটিপি প্রতিক্রিয়াগুলিতে অন্তর্ভুক্ত করা উচিত নয়।" সুতরাং যখন অনুরোধটি নিয়মিত http হয় তখন এটি প্রেরণের দরকার হয় না, ব্রাউজার যদি মান অনুসরণ করে তবে তা উপেক্ষা করা উচিত।
ফ্র্যাঙ্ক ফোর্ট

1
@ চিহ্নিত যদি একটি এমআইটিএম থাকে এবং আপনার ওয়েবসাইটটিতে এই শিরোলেখ না থাকে, আপনি একটি সমন্বিত সেশনটি HTTP- এ যেতে পারবেন এবং লোকেরা তাদের বিশদ বিবরণ দিন এবং তারা সম্ভবত লক্ষ্য করবেন না এবং পুনর্নির্দেশ সাহায্য করবে না (লোকটিকে মাঝারিটি https এর মাধ্যমে সাইটের সাথে সংযুক্ত হবে এবং এটি HTTP হিসাবে উপস্থাপন করবে)। এই শিরোনামটি ব্যবহার করে ক্লায়েন্টের পক্ষে HTTPS জোর করবে। সাম্প্রতিক WPA2 ওয়াইফাই সুরক্ষা দুর্বলতার কারণে এটি বিশেষত গুরুত্বপূর্ণ important
Rudiger

19

আমি কেবল একটি .htaccess ফাইল তৈরি করেছি এবং যুক্ত করেছি:

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

সরল!


9
// Force HTTPS for security
if($_SERVER["HTTPS"] != "on") {
    $pageURL = "Location: https://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
    header($pageURL);
}

8

কোনও ভার ভারসাম্যের পিছনে দৌড়ানোর সময় এমন কিছু করতে হয়েছিল। টুপি টিপ https://stackoverflow.com/a/16076965/766172

function isSecure() {
    return (
        (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
     || $_SERVER['SERVER_PORT'] == 443
     || (
            (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
         || (!empty($_SERVER['HTTP_X_FORWARDED_SSL'])   && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')
        )
    );
}

function requireHTTPS() {
    if (!isSecure()) {
        header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], TRUE, 301);
        exit;
    }
}

6

পিএইচপি উপায়:

$is_https=false;
if (isset($_SERVER['HTTPS'])) $is_https=$_SERVER['HTTPS'];
if ($is_https !== "on")
{
    header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit(1);
}

অ্যাপাচি মোড_উইরাইট উপায়:

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

আমি পিএইচপি উপায় পছন্দ করি কারণ এমন উদাহরণ রয়েছে যেখানে আমি এসএসএলের প্রয়োজনীয়তা ওভাররাইড করতে চাই। উদাহরণস্বরূপ, এপিআই এবং মজিলা থান্ডারবার্ডের অটোকনফিগার ইত্যাদির মতো জিনিসগুলিতে স্থানীয় অ্যাক্সেস
জয়

পিএইচপি পদ্ধতিটি আমার পক্ষে নিখুঁতভাবে সুপারিশ করে।
মোক্সেট জানুয়ারী

5

http://www.besthostratings.com/articles/force-ssl-htaccess.html

কখনও কখনও আপনার সুনির্দিষ্ট সংযোগের মাধ্যমে ব্যবহারকারী আপনার সাইটটি ব্রাউজ করছে তা নিশ্চিত করার প্রয়োজন হতে পারে। ব্যবহারকারীকে সর্বদা সুরক্ষিত সংযোগে পুনঃনির্দেশ করার সহজ উপায় (https: //) নিম্নলিখিত লাইনগুলি সহ একটি .htaccess ফাইল দিয়ে সম্পন্ন করা যেতে পারে:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

দয়া করে নোট করুন যে .htaccess ওয়েব সাইটের প্রধান ফোল্ডারে থাকা উচিত।

আপনি যদি কোনও নির্দিষ্ট ফোল্ডারের জন্য এইচটিটিপিএসকে বাধ্য করতে চান তবে আপনি ব্যবহার করতে পারেন:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]

.Htaccess ফাইলটি এমন ফোল্ডারে রেখে দেওয়া উচিত যেখানে আপনাকে HTTPS জোর করতে হবে।


5

ঠিক আছে .. এখন এটিতে প্রচুর পরিমাণে স্টাফ রয়েছে তবে সত্যিই কেউ "সিকিউর" প্রশ্নটি সম্পূর্ণ করেন না। আমার কাছে এটি অনিরাপদ এমন কোনও জিনিস ব্যবহার করা অত্যন্ত তাত্পর্যপূর্ণ।

আপনি যদি এটিকে টোপ হিসাবে ব্যবহার না করেন।

Knows _SERVER প্রচারটি কীভাবে জানে এমন ব্যক্তির ইচ্ছায় পরিবর্তন করা যেতে পারে।

এছাড়াও সাজ্জাদ তুষার খান এবং thebigjc এর বিবরণ অনুসারে আপনি এটি করতে httaccess ব্যবহার করতে পারেন এবং এটিতে এখানে প্রচুর উত্তর রয়েছে।

শুধু যোগ কর:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

আপনার .httaccess এ যা আছে তার শেষ পর্যন্ত।

তবুও আমরা যতটা সম্ভব এই 2 টি সরঞ্জামের সাথে সুরক্ষিত থাকতে পারি না are

বাকীটি সরল। যদি অনুপস্থিত বৈশিষ্ট্যগুলি থাকে তবে ...

if(empty($_SERVER["HTTPS"])){ // SOMETHING IS FISHY
}

if(strstr($_SERVER['HTTP_HOST'],"mywebsite.com") === FALSE){// Something is FISHY
}


এও বলুন যে আপনি আপনার httaccess ফাইল আপডেট করেছেন এবং আপনি পরীক্ষা করেছেন:

if($_SERVER["HTTPS"] !== "on"){// Something is fishy
}

আরও অনেক ভেরিয়েবল আপনি পরীক্ষা করতে পারবেন যেমন ..

HOST_URI (এটি পরীক্ষা করার জন্য যদি স্থিতিশীল পরিমাণ থাকে)

HTTP_USER_AGENT (একই সেশনের বিভিন্ন মান)

সুতরাং সমস্ত ইম কথাই কেবল একটি বা অন্যটির জন্য নিষ্পত্তি হয় না যখন উত্তরটির সংমিশ্রণ থাকে।

আরো httaccess তথ্য rewriting জন্য docs-> দেখুন http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

কিছু স্ট্যাক এখানে -> ফোর্স SSL এর / .htaccess এবং mod_rewrite ব্যবহার HTTPS
এবং
সম্পূর্ণ URL পথ বর্তমান পৃষ্ঠা (পিএইচপি)
একটি দম্পতির নাম।


2
কিন্তু এখন আমি নিম্নলিখিত ত্রুটির পাবেন: ERR_TOO_MANY_REDIRECTS। আমি কিভাবে এটা ঠিক করব?
পাঠ্রস

3

$_SERVER['HTTPS']এটি এসএসএল কিনা তা বলার জন্য ব্যবহার করুন এবং না হলে সঠিক জায়গায় পুনর্নির্দেশ করুন।

এবং মনে রাখবেন, যে পৃষ্ঠাটি ফর্মটি প্রদর্শন করে তা এইচটিটিপিএসের মাধ্যমে খাওয়ানোর দরকার নেই, এটি URL এর পরে ফিরে পোস্ট করা দরকার যা এটির সবচেয়ে বেশি প্রয়োজন।

সম্পাদনা : হ্যাঁ, নীচে নির্দেশিত হিসাবে, সম্পূর্ণ প্রক্রিয়াটি এইচটিটিপিএসে রাখা ভাল। এটি অনেক বেশি আশ্বাসযুক্ত - আমি উল্লেখ করছিলাম যে পোস্টটি সবচেয়ে গুরুত্বপূর্ণ অংশ। এছাড়াও, আপনার যত্ন নিতে হবে যে কোনও কুকিজ সুরক্ষিত থাকার জন্য সেট করা আছে, তাই সেগুলি কেবল এসএসএলের মাধ্যমে প্রেরণ করা হবে। মোড_আরাইট সমাধানটিও খুব নিফটির, আমি এটি নিজের ওয়েবসাইটে প্রচুর অ্যাপ্লিকেশন সুরক্ষিত করতে ব্যবহার করেছি।


এটি সত্য যে ফর্মটি নিজেই https হওয়ার দরকার নেই, যদিও এটি জানেন না এমন বেশিরভাগ লোকের পক্ষে এটি একটি ভাল ধারণা। যদি তারা ফর্মটি জমা দিতে চলেছে এবং লক্ষ্য করে যে লক আইকনটি সেখানে নেই, তারা ভুল করে ধরে নিতে পারে যে ফর্মটি নিরাপত্তাহীন।
গ্রিমে পেরো

1
@ গ্র্যাম: অতিরিক্ত রূপটি কেউ https এর মাধ্যমে প্রেরণ করা হবে তা নিশ্চিত হতে পারে না। পুরো ফর্মটি (HTTP- র মাধ্যমে প্রদর্শিত) একটি জাল হতে পারে, অজানা বা HTTP ক্লিয়ারটেক্সট সাইটে জমা দেওয়া। এইচটিপিএস কেবল এনক্রিপশন সম্পর্কে নয়, এটি সার্ভারকেও অনুমোদন দেয়।
ওলাফ কক

3

ব্যবহার htaccess:

#if domain has www. and not https://
  RewriteCond %{HTTPS} =off [NC]
  RewriteCond %{HTTP_HOST} ^(?i:www+\.+[^.]+\.+[^.]+)$
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=307]

#if domain has not www.
  RewriteCond %{HTTP_HOST} ^([^.]+\.+[^.]+)$
  RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=307]

1

একই পৃষ্ঠায় HTTP এবং HTTPS মিশ্রিত করবেন না। আপনার যদি এমন একটি ফর্ম পৃষ্ঠা থাকে যা HTTP- র মাধ্যমে পরিবেশন করা হয়, তবে আমি ডেটা জমা দেওয়ার বিষয়ে ঘাবড়ে যাচ্ছি - আমি কোনও ভিউ সোর্স না করে এবং এটির জন্য শিকার না করে জমাটি এইচটিটিপিএস বা এইচটিটিপি-র উপরে যায় কিনা তা দেখতে পাচ্ছি না।

জমা লিঙ্কের সাথে এইচটিটিপিএসের মাধ্যমে ফর্মটি পরিবেশন করা সুবিধার জন্য খুব ভারী পরিবর্তন নয়।


1

আপনি যদি অ্যাপাচি বা লাইটস্পিডের মতো কিছু ব্যবহার করেন যা .htaccess ফাইলগুলিকে সমর্থন করে, আপনি নিম্নলিখিতটি করতে পারেন। আপনার যদি ইতিমধ্যে একটি .htaccess ফাইল না থাকে তবে আপনার মূল ডিরেক্টরিতে একটি নতুন .htaccess ফাইল তৈরি করা উচিত (সাধারণত যেখানে আপনার index.php অবস্থিত)। আপনার .htaccess এ প্রথম পুনর্লিখনের নিয়ম হিসাবে এখন এই রেখাগুলি যুক্ত করুন:

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

সমস্ত পুনর্লিখনের নিয়মের জন্য আপনার .htaccess এ একবার আপনার কেবলমাত্র "পুনরায় রাইটারইঙ্গাইন অন" নির্দেশিকাটি দরকার, সুতরাং আপনার যদি ইতিমধ্যে এটি থাকে তবে কেবল দ্বিতীয় এবং তৃতীয় লাইনটি অনুলিপি করুন।

আশা করি এটা কাজে লাগবে.


এটি আমার পক্ষে কাজ করেছে এবং আমি নিজের স্ক্রিপ্টগুলিতে জেন্ড ২-এর মতো ফ্রেমওয়ার্কে কী ব্যবহার করছি - ডাউনটা আমার পক্ষে বুঝতে পারি না।
আন্তোনিও

সম্ভবত আপনি হতাশ হয়ে পড়েছেন কারণ উত্তরটি প্রায় এক বছরেরও বেশি আগে পোস্ট করা হয়েছে @ ম্যাটহ্যাট্রিকের উত্তরটির মতোই?
উইল্ট

1

এটি ব্যবহার করা যথেষ্ট নয়:

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

আপনার যদি কোনও HTTP সামগ্রী থাকে (যেমন একটি বাহ্যিক HTTP চিত্র উত্সের মতো), ব্রাউজারটি একটি সম্ভাব্য হুমকি সনাক্ত করবে। সুতরাং আপনার কোডের ভিতরে থাকা সমস্ত রেফারেন্স এবং এসসিআরই https sure


1

আমি solutions _SERVER [HTTPS] এর স্থিতি যাচাই করে অনেকগুলি সমাধান করেছি through তবে মনে হয় এটি নির্ভরযোগ্য নয় কারণ কখনও কখনও এটি স্ক্রিপ্টটিকে অভ্যন্তরীণ লুপটিকে পুনঃনির্দেশিত করে না কারণ এটি সেট করে না বা সেট করা থাকে না off

যদি আপনার সার্ভারটি $ _SERVER [SCRIPT_URI] সমর্থন করে তবে এখানে সর্বাধিক নির্ভরযোগ্য সমাধান

if (stripos(substr($_SERVER[SCRIPT_URI], 0, 5), "https") === false) {
    header("location:https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
    echo "<meta http-equiv='refresh' content='0; url=https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]'>";
    exit;
}

দয়া করে নোট করুন যে আপনার ইনস্টলেশনের উপর নির্ভর করে আপনার সার্ভারটি $ _SERVER [SCRIPT_URI] সমর্থন করবে না তবে এটি যদি হয় তবে এটি ব্যবহারের জন্য আরও ভাল স্ক্রিপ্ট।

আপনি এখানে যাচাই করতে পারেন: কিছু পিএইচপি ইনস্টলেশনের কেন $ _SERVER ['SQLT_URI'] আছে এবং অন্যদের কেন নেই?


1

যারা আইআইএস ব্যবহার করছেন তাদের জন্য ওয়েলকনফিগটিতে এই লাইনটি যুক্ত করা সহায়তা করবে:

<httpProtocol>
    <customHeaders>
        <add name="Strict-Transport-Security" value="max-age=31536000"/>
    </customHeaders>
</httpProtocol>
<rewrite>
    <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                 <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
         </rule>
    </rules>
</rewrite>

একটি সম্পূর্ণ উদাহরণ ফাইল

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Strict-Transport-Security" value="max-age=31536000"/>
             </customHeaders>
        </httpProtocol>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                      <match url="(.*)" />
                      <conditions>
                         <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                      </conditions>
                      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
                 </rule>
            </rules>
       </rewrite>
   </system.webServer>
</configuration>

প্রশ্নটি আইআইএস নয়, অ্যাপাচি সম্পর্কে বিশেষভাবে জিজ্ঞাসা করে।
কোয়ান্টিন

1
ক) এটি ট্যাগ করা অ্যাপাচি নয়। অ্যাপাচি উদ্ধৃতিগুলির মধ্যে মেশানো হয়। খ) এটি একটি জেনেরিক প্রশ্ন যার সাধারণভাবে অ্যাপাচিগুলির সাথে কোনও সম্পর্ক নেই। এটি একাধিক পিএইচপি সমর্থনকারী ওয়েবসার্সগুলিতে প্রযোজ্য
স্যাশাল্লাকা

0

সুরক্ষার কারণে আপনার উচিত হবে না। বিশেষত যদি কুকিজ এখানে খেলতে থাকে। এটি আপনাকে কুকি-ভিত্তিক রিপ্লে আক্রমণগুলির জন্য প্রশস্ত উন্মুক্ত ছেড়ে দেয়।

যে কোনও উপায়ে, আপনার টিউন করতে আপনার অ্যাপাচি নিয়ন্ত্রণের নিয়ম ব্যবহার করা উচিত।

তারপরে আপনি এইচটিটিপিএস সক্ষম হওয়ার জন্য পরীক্ষা করতে পারেন এবং প্রয়োজন হিসাবে পুনর্নির্দেশ করতে পারেন।

আপনাকে কেবলমাত্র একটি ফরম পোস্ট ব্যবহার করে পে পৃষ্ঠায় পুনঃনির্দেশ করা উচিত (কোনও গিফট নেই), এবং কোনও পোষ্ট ছাড়াই পৃষ্ঠাতে অ্যাক্সেসগুলি অন্য পৃষ্ঠায় ফিরে যেতে হবে। (এটি কেবল গরম-ঝাঁপিয়ে মানুষকে ধরবে))

http://joseph.randomnetworks.com/archives/2004/07/22/redirect-to-ssl-using-apaches-htaccess/

শুরু করার জন্য একটি ভাল জায়গা, বেশি সরবরাহ না করার জন্য ক্ষমা চাই। তবে আপনার সত্যিকার অর্থে এসএসএলের মাধ্যমে সমস্ত কিছু সরিয়ে দেওয়া উচিত

এটি অত্যধিক প্রতিরক্ষামূলক তবে কমপক্ষে আপনার উদ্বেগ কম রয়েছে।


0

সম্ভবত এই কেউ সাহায্য করতে পারে, আপনি, আমি এইভাবে আমার ওয়েবসাইটের জন্য এটি করেছি, এটি একটি কবজির মতো কাজ করে:

$protocol = $_SERVER["HTTP_CF_VISITOR"];

if (!strstr($protocol, 'https')){
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

0

আপনি যদি এটি করতে পিএইচপি ব্যবহার করতে চান তবে এইভাবে আমার পক্ষে সত্যিই ভালভাবে কাজ করেছে:


<?php

if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on") {
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], true, 301);
    //Prevent the rest of the script from executing.
    exit;
}
?>

এটি "চালু" এর সমান কিনা তা দেখতে $ _SERVER সুপারগ্লোবাল অ্যারেতে HTTPS ভেরিয়েবলটি পরীক্ষা করে। চলকটি যদি সমান না হয় তবে।


-1

আমি এই স্ক্রিপ্টটি ব্যবহার করেছি এবং এটি সাইটের মাধ্যমে ভাল কাজ করে।

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    enter code hereheader('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $redirect);
    exit();
}

-2
<?php 
// Require https
if ($_SERVER['HTTPS'] != "on") {
    $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    header("Location: $url");
    exit;
}
?>

এটা সহজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.