پروتکل HTTPS یکی از پروتکلهای امنیتی است که برای ارتباطات اینترنتی استفاده میشود. در ASP.NET Core، میتوان از HTTPS برای ارتباطات امن در برنامههای وب استفاده کرد. برای فعالسازی HTTPS در ASP.NET Core، میتوان از تنظیمات مربوط به SSL/TLS در فایلهای پیکربندی وب استفاد کرد. در این مقاله از مجله پی استور به آموزش نحوه اعمال پروتکل HTTPS در asp.net core خواهیم پرداخت.
پروتکل HTTPS چیست؟
پروتکل HTTPS به اختصار «Hypertext Transfer Protocol Secure» است که برای برقراری ارتباط امن و رمزنگاری شده بین مرورگر و وب سرور استفاده میشود. این پروتکل بر اساس پروتکل HTTP است، اما با افزودن لایهی امنیتی SSL/TLS (لایهی امنیتی انتقال سوکت)، اطلاعات ارسالی بین مرورگر و سرور رمزنگاری و از انتقال امن برخوردار میشود. استفاده از HTTPS به کاربران اطمینان میدهد که ارتباطاتشان با وبسایت در حالت امنی صورت میگیرد و از اطلاعات حساسشان محافظت میشود.
زمانیکه یک کاربر به یک وبسایت با استفاده از HTTPS متصل میشود، مرورگر وب با سرور ارتباط برقرار میکند و یک فرآیند تبادل گواهی SSL/TLS انجام میدهد. این گواهی نشان میدهد که سرور اعتبار دارد و اطلاعاتی که بین مرورگر و سرور ارسال میشوند، رمزنگاری شده و امنیت فراهم است. بنابراین، اطلاعاتی که بین مرورگر و وب سرور ارسال میشوند، از دسترسی غیرمجاز محافظت میشوند و از امکان تغییر آنها توسط شخص یا نهادی که در میان ارتباطات میانی (مثل یک حمله من در میان) قرار میگیرد، جلوگیری میشود.
به طور کلی، HTTPS برای اطمینان از امنیت ارتباطات در اینترنت، به خصوص در ارسال اطلاعات حساس مانند اطلاعات کارت اعتباری یا اطلاعات ورود به سیستم، بسیار حیاتی است.
امنیت در asp.net
در زمان توسعه یک برنامه ASP.NET به طور پیش فرض به منظور افزایش امنیت و جلوگیری از حملات انتقال، تقلب کوکی و غیره، پروتکل HTTPS بایستی فعال شود. در واقع، یک نرمافزار میانی بایستی اطمینان حاصل کند که تمام دادهها از طریق یک شبکه امن ارسال میشوند. به عبارت ساده، این نرمافزار واسط تمام دادهها را با استفاده از مکانیزم رمزنگاری برای حفظ امانت دادهها از HTTP به HTTPS هدایت میکند.
زمانیکه این نرمافزار میانی را پیادهسازی میکنید، یک پاسخ هدایت موقت ۳۰۷ ایجاد میکند و آن را با پورت HTTPS پیکربندی شده مرتبط میکند تا مسیر به نقطه پایانی تعریف شود. در ASP.NET، اگر هر شرایط مشخص نشود، نرمافزار واسط UseHttpsRedirection یک هشدار به کاربر نشان میدهد و هیچ دادهای را ارسال نخواهد کرد. بنابراین، پیادهسازی این مؤلفه درهر نرمافزار NET Core برای تجربهای بیسر و صدا، پیوسته و امن ضروری است.
چرا UseHttpsRedirection ضروری است؟
پروتکل HTTPS یک ضرورت است و فعال کردن این عنصر در ASP.NET برای کاربر بسیار مفید است. ضرورت این مسئله میتوان به صورت زیر خلاصه کرد:
- سیستمهای سرویس گیرنده و سرور برای حفظ یکپارچگی دادهها یک کانال انتقال رمزگذاری شده ایجاد میکنند.
- هردو سیستم کلاینت و سرور قبل از برقراری اتصال، تأییدیههایی را ارسال میکنند و فقط به کاربران مجاز اجازه میدهند به منابع دسترسی داشته باشند.
- این سیستم از حملات سایبری احتمالی مانند استراق سمع و جعل جلوگیری میکند.
- برنامه و سازمان اعتماد کاربر را با انتقال امن همه دادهها افزایش میدهد.
- اگر پروتکل HTTPS فعال نباشد، سیستم به کاربر هشدار میدهد که دادهها را از طریق شبکه ناامن ارسال کند.
نحوه فعال کردن پیکربندی HTTPS در برنامه وب ASP.NET
دانستن نحوه پیکربندی HTTPS در برنامههای ASP.NET ضروری است، زیرا ارائه یک اکوسیستم امن برای دسترسی به منابع و انجام عملیات است. برای اجرای موفقیت آمیز پروتکل HTTPS، میتوانید فرآیند فهرست شده زیررا دنبال کنید:
عنصر اولیهای که برای ایمن سازی برنامه در معماری ASP.NET استفاده میشود، کلاس گنجانده شده به نام UseHttpsRedirection است. اگر برنامه درخواستی را از طریق شبکهای ناامن یا پیکربندی HTTP ارسال کند، پاسخی را به کلاینت هدایت میکند.
علاوه بر این، توسعهدهنده میتواند این ویژگی را بر اساس هر کنترلکننده و بر اساس هر اقدام، با توجه به الزامات تجاری و محدوده پروژه تعریفشده، فعال کند. با این حال، فعال کردن این گزینه در کل برنامه وب ترجیح داده میشود، که سپس هر تکه داده را مجبور به عبور از کانال HTTPS میکند.
توسعه دهنده ASP.NET باید کد خط زیر را تحت روش RegisterGlobalFilters که در داخل کلاس FilterConfig قرار داده شده است، تعریف کند.
filters.Add(new RequireHttpsAttribute());
برنامه شروع میشود و متد RegisterGlobalFilters را فراخوانی میکند که متد اصلی را اجرا میکند. با اعمال این تابع فیلتر، برنامه فقط درخواستهای HTTP ارسال شده به کنترلرها را اجرا میکند و در عینحال به کاربر اجازه میدهد تا از طریق یک کانال ارتباطی ناامن به فایلهای ثابت دسترسی داشته باشد. برای درک بهتر میتوانید فیلم آموزش رایگان اعمال پروتکل HTTPS در asp.net core را در ادامه مشاهده نمایید.
چگونه مشکل را در RegisterGlobalFilters برطرف کنیم؟
برای غلبه بر مشکل در RegisterGlobalFilters، میتوانید از پیوندهای نسبی برای مرجع منابع از HTML استفاده کنید. علاوه بر این، URL های مطلق نیز میتوانند به همراه پروتکل HTTPS برای اطمینان از امنیت راه حل کلی ASP.NET استفاده شوند.
همچنین می توانید کد بازنویسی را تغییر دهید و تغییر مسیر داده را در سطح پروکسی معکوس در طول اجرای IIS پیکربندی کنید. پیاده سازی به طور خودکار جهت درخواستهای دریافتی به شبکه دارای HTTPS را تغییر میدهد. باید فایل Web.config را با کد زیر ذخیره کنید.
پس از کامپایل و اضافه کردن این کد به IIS، برنامه ASP.NET هر بیت از ترافیک ورودی را با انتقال آن به کانال امن ارزیابی و مدیریت می کند.
پروتکل HTTPS در asp.net core
ایجاد یک محیط امن برای انتقال داده ها در یک برنامه NET Core کار پیچیده ای نیست، زیرا یک کلاس داخلی به نام RequireHttpsAttribute برای جلوگیری از تهدیدات سایبری ارائه میدهد. با کمک این کلاس، میتوانید مکانیسمهای امنیتی را روی یک کنترلکننده، اکشن یا برنامه عمومی پیکربندی کنید. باید آنرا تحت متد ConfigureServices در کلاس Startup تعریف کنید.
/// <summary> /// This method gets called by the runtime. /// Use this method to add services to the container. /// </summary> /// <param name="services">The collection of container services</param> public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(options => options.Filters.Add(new RequireHttpsAttribute()));
علاوه بر این، میتوانید یک میانافزار گنجانده شده، HTTPS Redirection را با افزودن یک خط کد در متد Configure کلاس Startup پیکربندی کنید.
app.UseHttpsRedirection();
همیشه لازم نیست این میان افزار را پیکربندی کنید، زیرا اکثر قالبهای برنامه وب ASP.NET، مانند MVC، به طور پیش فرض با آن فعال می شوند.
فیلم آموزش پروتکل HTTPS در asp.net core
نتیجه گیری
در هنگام توسعه برنامهها و نرم افزارهای NET Core، بایستی به مکانیسمهای امنیتی داخلی آن مانند UseHttpsRedirection توجه کرد تا پروتکل HTTPS را برای به اشتراک گذاری دادهها بین سیستمهای سرور و کلاینت به طور ایمن فعال کند. ASP.NET شامل ویژگیهای منحصر به فردی است، اما یک توسعه دهنده NET Core باید کد فیلتر را در کلاسهای از پیش تعریف شده در معماری NET Core تغییر دهد تا امکان تغییر مسیر را فراهم کند.
میانافزار UseHttpsRedirection جزء ضروری هر برنامه ASP.NET است و توسعهدهندگان میتوانند آن را با تغییر عملکرد فیلتر و تنظیم بلوک کد بازنویسی در IIS پیکربندی کنند. بنابراین، توسعه دهندگان ASP.NET باید همیشه در حین توسعه راهحل بر روی این بخش تمرکز کنند و قبل از استقرار نهایی آن را آزمایش کنند تا از یکپارچگی داده برای هر کاربر اطمینان حاصل کنند.