ویرگول
ورودثبت نام
امیر حسین حسینی
امیر حسین حسینی
خواندن ۱۲ دقیقه·۳ سال پیش

درک آسان پروتکل های وب

HTTP و HTTPS چیست؟

پروتکل های وب چیست؟

آیا می دانید 68٪ از کاربران اینترنت معتقدند قوانین فعلی برای حمایت از حقوق آنها کافی نیست؟

هر بار که گوگل قانون جدیدی را ارائه میدهد، کل اینترنت مجبور به پیاده سازی آن میشوند. برای مثال اخیرا گوگل اعلام کرد که سایت هایی که SSL دارند، اولویت بیشتری برای نمایش خواهند داشت. (از همین رو تمامی وبسایت ها اقدام به تهیه SSL کردند.). در این مقاله سعی میشود مقدمات پروتکل های HTTP و HTTPS پوشش داده شود.


(تصویر مربوط به استفاده میان 100 هزار دامین برتر HTTPSدر سال های مختلف هست)

پروتکل چیست؟

پروتکل مجموعه قوانینی است که ما برای اهداف خاصی استفاده می کنیم.

در سناریوی فعلی ، هنگامی که ما در مورد پروتکل ها صحبت می کنیم ، مربوط به ارتباط است - روشی که با یکدیگر صحبت می کنیم.

به عنوان مثال ، یک خواننده خبر که به زبان فارسی صحبت می کند (چون فارسی را می فهمید )، روزنامه به آن زبان نوشته میشود. فارسی در این جا پروتکل نامیده میشود.

لحظه ای که خواننده خبر شروع به صحبت کردن به زبانی می کند که شما آن را نمی فهمید ، پروتکل ناکارآمد میشود.

بنابراین ، ما نیاز داریم که هر دو طرف با مجموعه ای از قوانین برای برقراری ارتباط موافقت کنند.

پروتکل ، در این مورد ، برای ارتباط است.

وب برای برقراری ارتباط از چندین پروتکل استفاده میکند.

برای کاربران تنها پروتکل های مهم و قابل مشاهده HTTP و HTTPS هستند.

با اینکه پروتکل های زیادی هستند، اما HTTP و HTTPS معروفیت را از آن خود کرده اند.

HTTP چیست؟

HTTP پروتکل انتقال ابرمتن هست. (Hyper Text Transfer Protocol). به زبان ساده انتقال و دریافت اطلاعات بر پایه متن.

همانطور که همه ما میدانیم زبان کامپیوتر 1 و 0 هست. یعنی زبان دودویی. از همین رو هر صفر و یک میتونه میتونه چیزی رو بسازه و میتونه یک حرف باشه.

بیایید بگوییم که قصد نوشتن حرف الف را داریم. الان اگر صفر معادل حرف "آ"، یک معادل حرف "ب" و صفر و یک معادل "پ" باشد، میتوانم بگوییم که با ترکیب صفر و یک میتوان یک حرف تولید کرد. در این حالت متن از قبل ساخته شده و در حال ارسال از طریق سیم (سیم یا کابل ارتباط) هست.

رایانه روی بسیاری از زبانها کار می کند: باینری خالص ، متن و برخی از قالب های دیگر مانند کدهای بایت (byte).

در اینجا (پروتکل ها) چیزی که منتقل میشود، متن است.

من بر "متن" تأکید دارم زیرا این متن توسط مرورگر تفسیر می شود و لحظه ای که مرورگر آن را تفسیر می کند ، تبدیل به ابرمتن می شود و پروتکل انتقال متن به عنوان پروتکل انتقال ابرمتن (hypertext transfer protocol – HTTP )شناخته می شود.

با HTTP شما یقینا میتوانید عکس، متن و حتی صدا (به بجز ویدیو) را انتقال بدهید.

HTTPS چیست؟

Hyper Text Transfer Protocol Secure – HTTPS (انتقال امن ابر متن) نسخه امن HTTP هست.

پروتکلی که اطلاعات بین مرورگر و وبسایتی که شما بهش متصل هستید انتقال پیدا میکند.

S آخر HTTPS به معنای امن (Secure) است. به این معنی که اطلاعات رمزنگاری میشوند. (encrypted)

HTTPS غالباً برای محافظت از معاملات آنلاین بسیار محرمانه مانند بانکداری آنلاین و فرم های سفارش خرید آنلاین استفاده می شود.

اهمیت HTTPS چیست؟

ما بر این حقیقت توافق کردیم که آنچه از یک نقطه به نقطه دیگر منتقل می شود متن است. برای درک عملکرد پروتکل HTTPS ، ابتدا باید بدانیم که روترهای wi-fi چگونه کار می کنند. بیایید بگوییم شما در یک فرودگاه هستید و بهWi-Fi که ملک شخص ثالث است متصل می شوید. اکنون ، هنگام برقراری ارتباط از طریق HTTP ، متن توسط روتر آنها منتقل می شود. و اگر به نسخه پایین تری از روتر (مسیر یاب یا مودم) بروم ، می توانم متن منتقل شده را به راحتی بررسی و بخوانم. می تواند رمز عبوری باشد که بتوانم از آن برای ورود به سایت بانکی شما و انجام معامله ای جعلی استفاده کنم!. نکته مهم - این اساساً ناامن است. به این مرد در وضعیت حمله میانی

(middle attack) قرار گرفته است. به همین دلیل به HTTPS بجای HTTP نیاز داریم. اکنون ، برای نجات داده های خود از چنین حملاتی ، باید آن داده ها را رمزگذاری کنیم.



(تصویر: سایت یا دامنه HTTPS به این شکل است.)

در واقع ، به منظور پیاده سازی اتصال ایمن پیشرفته برای کاربران ، در سال 2014 غول موتور جستجو HTTPS را به عنوان یک سیگنال رتبه بندی اعلام کرد. و نحوه استفاده صنایع مختلف را در شکل زیر میتوانید ببینید.


(میزان استفاده مختلف صنایع از HTTPS)

رمزنگاری و سطوح آن

رمزگذاری اصطلاحا ساده پنهان سازی اطلاعات است. روش های مختلفی برای انجام این کار وجود دارد. حتماً این اصطلاحات را شنیده اید - رمزگذاری 128 بیتی HTTPS و رمزگذاری 64 بیتی HTTPS. رمزگذاری 128 بیتی یک روش رمزگذاری سطح بالا است و رمزگشایی آن بسیار دشوار است (decode). با این حال هکر میتواند بفهمد چه دیتایی در حال جابه‌جایی است، اما بخاطر رمزنگاری شدن آن نمیتواند آن را بفهمد. فقط مرورگر و سرور قادر به رمزگشایی خواهند بود.

برای کنجکاو ها - همچنین یک فیلم در زمینه رمزگذاری ، به نام "بازی های تقلید" وجود دارد. کل طرح فیلم بر اساس رمزگشایی کدهای آلمان بود که قرار بود کل روند جنگ را اصلاح کند. رمزگشایی این کدها بسیار دشوار بود ، اما بالاخره آلن تورینگ این کار را انجام می دهد.

وقتی شما درخواست باز کردن سایتی در مرورگر را دارید این اتفاق چگونه می افتد؟

برای درک این موضوع ، بگذارید تصور کنیم یک سرور وجود دارد که در جایی ساکن است و تمام درخواست های یک دامنه را ارائه می دهد. اکنون ، وقتی test.com را تایپ می کنم ، این یک سرور است که من به آن متصل می شوم ، داده ها را از آن گرفته و در مرورگر خود مشاهده میکنم . برای ساده سازی بیشتر ، تصور کنید نام دامنه google.com از یک سرور پخش می شود. در آنجا دستگاهی ساکن است که به اینترنت متصل است و لحظه ای که google.com را در مرورگر خود تایپ میکنید، شما به آن ماشین (سرور) متصل میشوید. داده ها را از آن دستگاه بر میدارید و در مرورگر خود میبینید. اگر عکس خود را ذخیره کرده باشید ، در آن دستگاه بارگذاری می شود. اکنون ، اگر می خواهید آن تصویر را ببینید ، به google.com/Mypicture بروید ، که تصویر را از دستگاه به مرورگر منتقل می کند تا به شما نشان داده شود. اگر من نتوانم به آن ماشین متصل بشوم، این روند نمی تواند تکمیل شود. برای این اتفاق ، هر دستگاهی یک آدرس دارد (مثل ما که یک شماره تلفن همراه داریم) ،

به آن آدرس IP گفته می شود و هر دامنه دارای یک " نقشه IP " است. لحظه تایپ اینURL کاربرپسند - google.com ، مرورگر نام کاربری را به IP تبدیل کرده و به روتر متصل می شود تا به آن خط سرویس خاص مرتبط با اینURL اتصال پیدا کند. هنگامی که درخواست به سرور رسید ، درخواست مورد نیاز را مطرح می کند. این به عنوان "google.com/s=" نشان داده شده است ، به کاربر کمک میشود تا عبارت را متوجه شود. در نتیجه ، سرور نتایج را مطابق درخواست شما که به مرورگر ارائه می شود ، به او می دهد.

چه اتفاقی می افتد که درخواستی برایURL وب سایت ارسال شود که روی پروتکل HTTP باشد؟

به عنوان اولین قدم ، کار HTTP این است که سرور را پیدا کند و پس از ایجاد مسیر ارتباطی ، سرور متنی را به مرورگر می فرستد. این متن می تواند به شکل خالص یا رمزگذاری شده باشد ، سپس توسط مرورگر ارائه می شود یا برای هر هدفی که لازم است استفاده شود. برای ضریب اندازه گیری پیچیدگی رمزگشایی میتوان گفت هرچه تعداد بیت ها بیشتر باشد، رمزگشایی به مراتب سخت تر خواهد شد، اما غیر ممکن نمیشود.

HTTP یا HTTPS


( تصویر مربوط به دو نفر هستش که یکی داره از پروتکل HTTP استفاده میکنه و به دوستش هم همین توصیه رو داره و شخص دیگه داره از HTTPS استفاده میکنه و داره به دوستش توصیه استفاده از HTTPS رو میکنه.

با این تفاوت که دیتای ارسالی از سمت شخصی که داره از HTTP ارسال میشه، بین راه شنود میشه ولی دیتای ارسالی با استفاده از پروتکل HTTPS قابل درک برای هکر یا واسط بین مرورگر و سرور نیست!)

هر چیزی و همه چیز شخصی است. اگر در حال جستجو برای "چگونه گواهی SSL را نصب کنیم" ، این جستجو برای شما خصوصی خواهد بود ، اینطور نیست؟ اگر در حال جستجوی محصولی باشید یا به دنبال کالایی باشید ، در حال خواندن مقاله باشید ، عموما نمی خواهید دیگران در مورد آن بدانند. به عنوان یک کاربر ، می خواهم آن را به صورت خصوصی حفظ کنم. مواردی وجود دارد که ممکن است بخواهم خصوصی نماند و برای آن ها می توانم از HTTP استفاده کنم. با این حال ، برای اطلاعات شخصی ، بانک ها و اطلاعات فراملی ، HTTPS به یک استاندارد تبدیل شده است.

HTTPS عالی به نظر می رسد. چه چیز دیگری باید در مورد آن بدانید؟

این واقعیت که حریم خصوصی برای آن هزینه دارد ، قابل انکار نیست. مانند دو روی یک سکه است.

1- درخواست های HTTPS زمان بیشتری برا پردازش میگیرد.

2- برای پردازش بیشتر، نیازمند سخت افزار بهتر نیز هست، این یعنی یک هزینه اضافی.

در حالی که ، برای HTTP شما در مقایسه با HTTPS از انرژی کمتری استفاده می کنید زیرا ارتباط سریعتر اتفاق می افتد (بدون رمزگذاری و رمزگشایی). من به این موضوع به عنوان یک محدودیت نگاه نمیکنم! بلکه اون رو یک هزینه شخصی متصور میشم. این هزینه برای داشتن و حفظ حریم خصوصی بسیار معقول هم هست.

ایده ساخت یک وب ایمن مدتی است که وجود دارد. ایجاد یک وب امن به عنوان یک دستور کار توسط افرادی مانند Google ، Facebook ، Akamai و غیره هدایت می شود ، همانطور که ذکر کردم این امر به بخاطر دو دلیل زیر است -

1- داده های کاربر و حریم خصوصی کاربر: استفاده از HTTPS اطمینان می دهد که شما به عنوان یک توسعه دهنده به داده های کاربر ، حریم خصوصی کاربر و امنیت آن اهمیت می دهید.

2- محافظت از داده های شما: به عنوان یک توسعه دهنده ، هرگز نمی خواهیم داده های مهم خود را به شرکت کنندگان مخرب بدهیم

استفاده نکردن از HTTPS چه خطری دارد؟


(آیا شما وبسایت های خود را به HTTPS منتقل خواهید کرد؟)

در اینجا برخی از ویژگی هایی که اکنون فقط در HTTPS در دسترس هستند وجود دارد.

مکان جغرافیایی: اگر از HTTP استفاده میکنید، دیگر نمی توانید مکان کاربر را جستجو کنید.

نوتیفیکیشن (push notification): اطلاع رسانی اعلانات فقط از طریق HTTPS در دسترسی هستند.

(تجربه شخصی: اگر بخواهید از سرویس Fire Base Notification گوگل استفاده کنید، نمیتوانید خروجی کار خود را در پروتکل های بودن HTTPS ببنید.)

گرفتن اطلاعات کاربر: نمیتوانید دسترسی استفاده از دوربین یا میکروفون کاربر را بگیرید.

HTTP/2 : همه مرورگر های اصلی (پر استفاده) HTTP/2 را برای HTTPS استفاده میکنند.

به زودی حذف میشوند:

کش اپ (app cache): قابلیتی که به توسعه دهندگان اجازه می دهد محتوا را در مرورگر کش کرده و آن را برای مشاهده آفلاین در دسترس قرار دهند ، به زودی فقط به سایت های HTTPS محدود می شوند.

افزونه رمزنگاری محتوا: قابلیتی که محافظت از داده ها را مدیریت میکند.

از نظر امنیتی و تجربه کاربری ، نوع گواهی انتخابی شما می تواند تأثیرگذار باشد. در نظر بگیرید که گواهی های مختلف چگونه وب سایت شما را در نوار آدرس مرورگر وب تغییر می دهند.


برخی از سوالات

فایده ارتقا از HTTP به HTTPS با n کاربر چیست؟

این یک سوال معمول هستش ، اما من می ترسم که جواب این سوال داده نشود. هزینه فقط به مقدار داده ای که منتقل می کنید بستگی نخواهد داشت. متغیرهای زیادی وجود دارد که بر روی هزینه تأثیر می گذارد ، نه فقط در کشش کاربر. در اینجا اگر ما در مورد داده های بانکی صحبت می کنیم ، شما باید هزینه را تحمل کنید ، هرچند که قابل توجه یا ناچیز باشد.

آیا داشتن HTTPS در زمان بارگذاری وب سایت شما تأثیر دارد؟

بله، کاملا تاثیر گذار است.

چرا نوتیفیکیشن به SSL نیاز دارد؟

پوش نوتیفیکیشن ها مدتی است که به SSL نیاز دارند و فقط در وب سایت هایی که = پروتکل HTTPS دارند کار می کنند. قبل از پاسخ دادن به این سوال. بیایید ببینیم این سیستم چگونه کار میکند:

دلیل اینکه نوتیفیکیشن ها فقط روی پروتکلHTTPS کار می کنند این است - داده هایی که پوش می شوند و دریافت می شوند یک داده خصوصی هستند. برای اطمینان از حریم خصوصی ، فقط در پروتکل HTTPS پشتیبانی می شود. اعلان ها اساساً برای کاربران شخصی هستند. قطعاً می خواهیم این ارتباط ایمن باشد. در این حالت خاص ، سرور می تواند مرورگر را پینگ کند.

هنگامی که کتاب پروتکل ها نوشته شد ، ذکر شد کهHTTP یک پروتکل Connection-Less-Protocolاست. این بدان معناست که سرور در مرکز داده نمی تواند کاری انجام دهد تا زمانی که مرورگر درخواست کند. و پس از پاسخ ، مرورگر تصمیم خواهد گرفت که آیا می خواهد در این مورد کاری انجام دهد یا خیر. این کاملاً تصمیم مرورگر است ، سرور نمی تواند به مرورگر دستور دهد که اقداماتی انجام دهد. ایده یک سرور تصادفی که مرورگر شما یا صفحه نمایش یا ماشین شما را کنترل می کند ترسناک است. برای جلوگیری از این امکان ، HTTP پروتکل Connection-Less-Protocolاست و همچنان ادامه دارد.

چند باور غلط

وب سایت ما ماهیت معامله‌ای ندارد، چرا باید از HTTPS استفاده کنم؟

گواهی SSL گران است.

ارتقای سایت از HTTP به HTTPS تاثیر زیادی روی پرفرمنس (پردازش، سرعت) خواهد داشت.

تاثیر بر third party های دیگر.

در مورد نوتیف ها بیشتر بدانید

جالب اینجاست که در مورد نوتیفیکیشن ها ، در واقع ، سرور داده ها را به سمت مرورگر میفرستد. اما به روشی ذخیره می شود که سرور فقط یک تلنگر به مرورگر می فرستد و می ترساند که اعلانی در انتظار شماست - همین. این گام به گام عملیات هستش.

- سرور به مروگر یک چشمک میزند.

- سپس کار پروتکل شروع میشود، و دیتا را از سرور درخواست میکند. این دیتا میتواند برای یک یوزر خاص شخصی سازی شده باشد، برای مثال شما n تومان خرید کرده اید.

- نوتیف توسط سرویس (service worker) گرفته میشود و سپس به کاربر نمایش داده میشود.

اگر امروز دارم برای پروتکلم تصمیم گیری میکنم، قطعا با وجود یک همچین قابلیتی (شخصی سازی نوتیفیکیشن) بدون تردید پروتکل رو امن میکردم.

آیا ممکنه نوتیفیکیشن ها بر روی HTTP کار کنند؟ قطعا

آیا میشود با HTTP از آن ها استفاده کرد؟ به هیچ وجه

ایده پشت پرده Service Workers

یک زاویه دیگر نیز برای آن وجود دارد - برای حفظ پایداری HTTP ، ما سرویس دهندگان داریم. همانطور که سرور فقط یک تلنگر ارسال می کند که شما یک اعلان دارید. به پروتکل قدیمی بدون اتصال متعارف سوئیچ می کند و می پرسد چه چیزی را باید نشان دهم و آن را نشان می دهد. بنابراین ، سرور داده را پوش نمی کند. این فقط به آنها می گوید که چیزی وجود دارد. بله ، این کمی پیچیده می شود ، اما کسانی که service worker را می فهمند ، می دانند که این امر به معنای مقدس نگه داشتن HTTP همانطور که قرار بود باشد، هست.

برخی منابع کاربردی

گوگل HTTPS توصیه میکند. چرا، چطوری و چگونه

نحوه استقرار HTTPS و همینطور مهاجرت از HTTP به HTTPS

Myth busting: گام به گام

آیا TLS هنوز سریع است؟


( اگر شما به حریم خصوصی نیاز دارید و میخواهیید اطلاعات خود را محرمانه نگه دارید، HTTPS چیزی است که شما نیاز دارید.)

منبع

پروتکلhttphttps
شاید از این پست‌ها خوشتان بیاید