دسته بندی ها
19:01 1399/04/25

نحوه ری دایرکت از http به https در Asp.net core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3183
پاسخ دهنده : mohammad-i 12:52 1399/04/28

میتونید از Middleware

app.UseHttpsRedirection();

استفاده کنید. روش دوم هم استفاده از Rewriting Middleware هست.

آموزش در سایت مایکروسافت

به این پاسخ امتیاز بدهید    0
امتیاز: 260 رتبه: 7
پاسخ دهنده : saedbfd 18:21 1399/04/28

نحوه ری دایرکت از http به https در Asp.net core

همونطوری که در متن سوال هم گفتید موضوع ری دایرکت از http به https اهمیت زیادی داره. از مهم ترین مواردی که برای این کار میشه ذکر کرد اینه که اگر اطلاعاتی که بین سایت شما و کاربر سایت شما از اهمیت بالایی برخوردار باشه مثل درگاههای بانکی یا اطلاعات سایتهایی مثل ثبت احوال و ... شخصی بتونه در این بین این اطلاعات رو شنود کنه عملا اطلاعات سایت و اطلاعات کاربران شما لو میره.

بنابراین لازم هست حتما این ری دایرکت از http به https انجام بشه تا اطلاعات انتقالی از سایت به کلاینت با امنیت بالاتری انجام بشه.

 

نحوه فعالسازی https

  1. جهت فعالسازی https ابتدا شما باید از یک شرکت معتبر گواهینامه ssl خریداری کنید و سپس روی هاست و سرور خودتون فعالسازی و نصب کنید.
  2. در مرحله بعدی باید ssl رو تنظیم یا اصطلاحا کانفیگ کنید.
  3. و در نهایت یک فایل بک آپ تهیه کنید تا در صورت بروز مشکل برای ssl سریع جایگزین کنید.

معمولا موارد بالا توسط خود شرکت هاست یا شرکتی که گواهینامه ssl از آن خریداری کرده اید انجام می شود.

 

ری دایرکت از http به https در کنترل پنل plesk یا cpanel

اما موضوع مهم بعدی بحث ری دایرکت از http به https می باشد. یعنی اگر کاربر شما هر کدام از Url های زیر را وارد کرد به Url شامل https هدایت شود

 

//اشتباه
www.mysite.ir
http://mysite.ir
http://www.mysite.ir

//صحیح
https://mysite.ir

 

دقت کنید که وظیفه اصلی ری دایرکت از http به https بر عهده خود هاست می باشد و معمولا شرکت های ارائه دهنده خدمات هاستینگ و گواهینامه ssl با انجام تنظیمات این کار را انجام می دهند و معمولا نیازی نیست برنامه نویس کاری انجام دهد.

 

اما با این حال ممکن است برخی از شرکت های ارائه دهنده هاست این کار را انجام ندهند و برنامه نویس می بایست عملیات ری دایرکت از http به https را انجام دهد.

 

ری دایرکت از http به https در asp.net core

 

نحوه ری دایرکت از http به https در Asp.net core

برای اینکه شما بتوانید به عنوان یک برنامه نویس از http به https ری دایرکت انجام دهید موقع ایجاد پروژه باید تیک configure for https را بزنید تا تنظیمات مربوط به https در پروژه شما ایجاد شود.

 

redirect from http to https

 

در حال حاضر فایل appsetting.json شما باید چیزی مشابه با زیر باشد:

 

{
  "ConnectionStrings": {
    "MyConnectionString": "Data Source=.;Initial Catalog=DataBasename;user Id=sa;Password=1"
  },

  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

 

خب حالا در کلاس startup.cs و در متد ConfigureServices دستور زی را در انتهای متد اضافه کنید

var optRewrite = new RewriteOptions().AddRedirectToHttpsPermanent();

 

اکنون به متد Configure بیابید و دستورات زیر را اضافه کنید :

 

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            //
            app.UseHttpsRedirection();
            app.Use(async (context, next) =>
            {
                string sHost = context.Request.Host.HasValue == true ? context.Request.Host.Value : "";  //domain without :80 port .ToString();
                sHost = sHost.ToLower();
                string sPath = context.Request.Path.HasValue == true ? context.Request.Path.Value : "";
                string sQuerystring = context.Request.QueryString.HasValue == true ? context.Request.QueryString.Value : "";

                if (!context.Request.IsHttps)
                {
                    string new_https_Url = "https://" + sHost;
                    if (sPath != "")
                    {
                        new_https_Url = new_https_Url + sPath;
                    }
                    if (sQuerystring != "")
                    {
                        new_https_Url = new_https_Url + sQuerystring;
                    }
                    context.Response.Redirect(new_https_Url);
                    return;
                }
                if (sHost.IndexOf("www.") == 0)
                {
                    string new_Url_without_www = "https://" + sHost.Replace("www.", "");
                    if (sPath != "")
                    {
                        new_Url_without_www = new_Url_without_www + sPath;
                    }
                    if (sQuerystring != "")
                    {
                        new_Url_without_www = new_Url_without_www + sQuerystring;
                    }
                    context.Response.Redirect(new_Url_without_www);
                    return;
                }
                await next();
            });

            //
            app.UseSession();
            app.UseStaticFiles();
            app.UseAuthentication();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
            
            app.UseCookiePolicy();
        }

 

 

در کدهای بالا همه حالات خطا که در بالا گفته شد بررسی شده و در صورتی که هر کدام از Url های اشتباه وارد شود به Url صحیح که با https شروع می شود تبدیل می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: 1654 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود