HTTP چیست؟
HTTP یکی از مهمترین و پرکاربردترین استاندارد برای تبادل اطلاعات در شبکههای اینترنتی می باشد. به زبان ساده تر تعریف، HTTP مختصر عبارت Hypertext Transfer Protocol است. همانطور که میتوان از نام آن فهمید HTTP یک پروتکل یا دستورالعملی تجویز شده برای ارائه اطلاعات میباشد که به منظور انتقال داده در سطح شبکه مورد استفاده قرار میگیرد.
و بیشتر اطلاعاتی که از طریق اینترنت ارسال میشود، از جمله محتوای صفحات وب و تماسهای API از طریق پروتکل HTTP انجام میشود.
زمانی که در مورد پروتکل HTTP حرف میزنیم، باید بدانیم که هر تماس در این پروتکل به دو مرحله درخواست (Request) و پاسخ (Response) تقسیم میشود. امروز ضمن تعریف HTTP و HTTPS، تفاوت HTTP و HTTPS را نیز بررسی خواهیم کرد.
یک درخواست HTTP به صورت معمول چگونه است؟
یک درخواست HTTP بطور ساده فقط یک سری از خطوط متنی است که از قوانین پروتکل HTTP پیروی میکند.
شرح انواع متدهای HTTP در این مقاله نمی گنجد. با این حال خوب است در اینجا بدانیم که 5 روش اصلی برای ارسال یک درخواست HTTP وجود دارد که عبارت است از: Get، Post، Patch، Delete، Put. هر یک از این متدها به منظور انجام عملی خاص مورد استفاده قرار میگیرد.
یک درخواست GET ممکن است به شکل زیر باشد:
GET /hello.txt HTTP/1.1 User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11 Host: www.example.com Accept-Language: en
در متن بالا مرورگر کاربران در واقع این کد را تولید و ارسال میکند و ممکن است درک آن بدون داشتن دانش اولیه از HTTP دشوار باشد. این موضوع زمانی یک مشکل تلقی میشود که کاربر در درخواست خود اطلاعاتی حساس مانند رمزهای عبور یا شماره کارتهای اعتباری خود را وارد نمایید. طبیعتا شما با پر کردن یک فرم اینترنتی باعث میشوید که مرورگر درخواستی حاوی این اطلاعات محرمانه را ایجاد و ارسال نماید.
در مرحله بعد، هنگامی که یک سرور، درخواست HTTP دریافت مینماید، با پردازش روی درخواست، پاسخی را به سمت کاربرمشابه شکل زیر هدایت میکند که میتواند به اینصورت باشد:
HTTP/1.1 200 OK Date: Wed, 30 Jan 2019 12:14:39 GMT Server: Apache Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT Accept-Ranges: bytes Content-Length: 12 Vary: Accept-Encoding Content-Type: text/plain Hello World!
چنانچه این تماسها توسط HTTP ارسال گردد، تمامی درخواستها و پاسخها میتواند توسط هر کسی که در حال ملاحظه نشست (session) است (کارفرما، سرویسدهنده اینترنت یا نفوذگر) خوانده شود و اطلاعات محرمانه بر فرد مانیتور کننده فاش شود. این بدین معنی است که یک عامل مخرب میتواند بفهمد که دقیقا چه کسی در حال ارسال یا دریافت چه اطلاعاتی است.
HTTPS چیست؟
HyperText Transfer Protocol Secure که به اختصار https نوشته میشود، در واقع یک نسخه رمزگذاری شده از http است که به عنوان پروتکل اصلی مورد استفاده برای انتقال دادهها از طریق شبکه جهانی وب شناخته میشود. حرف s در کلمه HTTPS مختصر عبارت Secure است. HTTPS از TLS یا SSL برای رمزگذاری درخواستها و پاسخها استفاده میکند.
TLS از یک تکنولوژی به نام public key encryption به منظور رمزگذاری بهره میگیرد. در این سیستم دو کلید به نامهای public key و private key وجود دارد. کلید عمومی (public key) از طریق گواهی SSL سرور (server’s SSL certificate) با کاربر به اشتراک گذاشته میشود. همچنین خود گواهی SSL توسط یک مرجع صدور گواهی یا CA (Certificate Authority) به صورت رمزگذاری شده امضا میشود. هر مرورگر لیستی از CA هایی دارد که به طور قطعی قابل اعتماد هستند و هر گواهی SSL ای که توسط یکی از موارد لیست قابل اعتماد مرورگرها امضا شود، دارای یک قفل سبز در نوار آدرس مرورگر خواهد بود و این به معنی قابل اعتماد بودن گواهینامه و تعلق آن به دامنه مذکور میباشد. قابل ذکر است که شرکتهایی مانند Let’s Encrypt فرایند صدور گواهیهای SSL/TLS را رایگان کردهاند.
https درخواستها و پاسخهای http را رمزگذاری میکند، بنابراین یک هکر به جای دست پیدا کردن به جزییات کارت اعتباری، فقط نویسههای تصادفی را خواهد دید.
زمانی که یک کاربر اتصالی را با یک سرور برقرار مینماید، هر دستگاه نیاز به هویتی تایید شده دارد. بدین منظور دو دستگاه (دستگاه کاربر و سرور) با استفاده از کلیدهای عمومی و خصوصی توافقی را برای کلید جدید قبول مینمایند. نام این کلید جدید session key یا کلید نشست میباشد که به منظور رمزگذاری بیشتر هنگام برقراری ارتباط ما بین دو دستگاه تولید شده است. در ادامه تمامی درخواستها و پاسخهای HTTP با استفاده از این کلید رمزگذاری میشود به طوری که اگر کسی تماسهای انجام شده را مانیتور نماید فقط میتواند رشتهای رمز شده از کارکترها را مشاهده نماید. یعنی متن ساده یا اصطلاحا Clear Text به متنی رمز شده تبدیل شده است.
HTTPS علاوه بر رمزگذاری ارتباطات، به منظور احراز هویت دو طرف تماس نیز مورد استفاده قرار میگیرد. احراز هویت در اینجا بدین معنی میباشد که یک شخص یا دستگاه، همان چیزی است که ادعا میکند. شما در HTTP هیچ تایید هویتیای مشاهده نمیکنید این باعث شد تا در HTTPS قوانینی حاکم باشد که مطابق با نیازهای اینترنت مدرن است.
درست همانطور که کارت شناسایی هویت یک فرد را تایید میکند، کلید خصوصی نیز هویت یک سرور را تایید میکند. زمانی که یک کلاینت کانالی را با یک سرور باز مینماید (مثلا وقتی یک کاربر وارد سایتی میشود)، داشتن یک کلید خصوصی منطبق با کلید عمومی موجود در گواهی SSL وب سایت، نشان دهنده قانونی بودن میزبان میباشد. این امر حملاتی را که در صورت عدم انجام درست احراز هویت، امکان پذیرند مانند حملات MITM، DNS hijacking و domain spoofing به حداقل میرساند.
تفاوت HTTP و HTTPS چیست؟
مهمترین تفاوت HTTP و HTTPS، گواهینامه SSL است. در واقع HTTPS یک پروتکل HTTP است با موارد امنیتی بیشتر. با این حال این امنیت اضافی میتواند بسیار حیاتی باشد به خصوص در وب سایتهایی که دادههای حساسی مانند اطلاعات کارت اعتباری و یا رمزهای عبور را از کاربران دریافت میکند.
برخی از دلایل بهتر بودن پروتکل HTTPS را نسبت به HTTP در زیر مشاهده مینمایید:
تاثیرگذاری HTTPS در بالا بردن رتبه وب سایت
در جواب تاثیرگذار بودن یا نبودن HTTPS برای سئو باید گفت که بله تاثیر گذار خواهد بود.
در کنار این واقعیت که گوگل قول افزایش رتبه اندک را به وب سایتهایی که به HTTPS تغییر وضعیت میدهند، داده است باید دانست که کاربران، بیشتر ممکن است از وب سایتهایی که میدانند امن هستند دیدن کنند. و بازدید بیشتر روی رتبه سایت شما تاثیر گذار خواهد بود.
نگهداشت Referrer Data به صورت مناسب
استفاده از HTTPS در وب سایت باعث تاثیرگذاری گوگل آنالیز میشود. این بدلیل امنیت بیشتر اطلاعات ارجاعی (referred data) هنگام استفاده از HTTPS است. این در حالی است که در HTTP منابع ارجاعی به صورت ترافیکی مستقیم ظاهر میشود
جلب اعتماد بازدیدکنندگان
با استفاده از HTTPS، تمامی ارتباطات رمزگذاری خواهد شد. این موضوع سبب میشود که بازدیدکنندگان قادر باشند که نه تنها از اطلاعات حساس خود مانند رمزعبور و اطلاعات کارت اعتباری، بلکه از تاریخچه مرور خود محافظت نمایند. دانستن اینکه کاربران در وب سایت شما قادر به حفظ حریم خصوصی خود هستند و داشتن امنیت در ثبت نام، خرید، دانلود و تمام عملهای دیگر به شما در جلب اعتماد کاربران کمک مینماید.
علاوه بر این باید دانست که HTTPS از سایت شما در برابر بسیاری از نقضهای امنیتی محافظت مینماید. این نقضها در صورت وقوع میتوانند به شهرت شما آسیب بزنند و حتی هزینههایی را برای شما در بر داشته باشند.
توانایی و واجد شرایط بودن برای ایجاد صفحات AMP
به صورت خلاصه، اگر بخواهید از صفحات AMP استفاده کنید، لزوما باید از پروتکل HTTPS در ارتباطات خود بهره گیرید.
پس در صورتی که ایجاد یک وب سایت سازگار با موبایل برای شما مهم است، حتما از HTTPS استفاده نمایید.
نگرانیهای مربوط به سئو هنگام تغییر HTTP به HTTPS
همانطور که تغییر وضعیت به HTTPS از مزایای زیادی برخوردار است، ممکن است مشکلاتی احتمالی را به وجود آرد. موارد زیر برخی از نکاتی است که شما باید هنگام تغییر به HTTPS در نظر داشته باشید.
در گوگل سیستمی برای تشخیص تغییر وضعیت به HTTPS وجود ندارد
به گوگل اطلاع دهید که وب سایت خود را از HTTP به HTTPS تغییر دادهاید. در گوگل هیچ سیستمی برای تشخیص تغییر وضعیت به HTTPS وجود ندارد و در صورتی که شما این موضوع را به گوگل اطلاع ندهید زمان زیادی طول میکشد تا گوگل از طریق خزیدن (crawling) متوجه تغییر وضعیت شما شود. بنابراین بهتر است که خودتان به گوگل اطلاع دهید
گواهی نامههایی دیگر به غیر از SSL وجود دارد
این موضوع شامل گواهیهای Single Domain، Multiple Domain و Wildcard SSL میباشد.
گواهی Single Domain برای وب سایتهای تک دامنهای و زیر دامنههای آن صادر میشود.
گواهی Multiple Domain که با عنوان Unified Communications certificate هم شناخته میشود، برای یک دامنه اصلی و بیش از 99 نام جایگزین صادر و استفاده میشود.
و گواهی Wildcard به شما امکان ایمن سازی URL وب سایتتان در کنار تعداد نامحدودی از زیردامنههایتان را میدهد.
احتمال موفق نبودن بارگیری منابع پس از مهاجرت به HTTPS
مطمئن شوید که از URLهای نسبی یا relative URLs برای تمامی منابع خود استفاده کردهاید. نسبی بودن URLها باعث میشود که شما به خطا عدم موفقیت در بارگیری منابع برخورد نکنید.
توجه داشته باشید که این موضوع برای همهی دامنههای دیگر بر روی دامنه شما و همچنین protocol relative URLs برای سایر دامنهها وجود دارد.
عدم دسترسی گوگل به فایل robots.txt
مطمئن شوید که به گوگل اجازه خزیدن (crawling) در وب سایت خود را میدهید. در صورتی که گوگل بدلیل تغییر پروتکل شما نتواند به فایل robots.txt دسترسی پیدا کند و دستورالعملهای مورد نیاز را در مورد خزیدن در وب سایت شما دریافت ننماید، میتواند به بالا بردن و بهبود سطح سئوی وب سایت شما آسیب بزند. در نتیجه، رتبه شما در سیستم رتبهبندی گوگل کاهش مییابد. این معمولا زمانی اتفاق میافتد که شما فراموش نمایید سرور آزمایشی خود را بروزرسانی کرده و دسترسیهای لازم را در اختیار رباتها قرار دهید.
مجاز نبودن موتورهای جستجو برای Index صفحات
ممکن است بخواهید تا زمان انجام درست تغییرات و پیادهسازی تنظیمات، به موتورهای جستجو اجازه ایندکس کردن صفحات سایت را ندهید ولی خوب است بدانید که این کار میتواند به اقدامات شما در راستای سئوی بهتر سایت آسیب بزند. چرا که شما رتبه قبلی خود را از دست میدهید و موتورهای جستجو شما را از لیست رتبه بندی خود خارج میکنند. بنابراین لازم است برای به دست آوردن مجدد رتبه خود، زمان زیادی را صرف کنید.
احتمال بروز مشکل در روند مهاجرت به HTTPS
لازم است روند مهاجرت خود را از HTTP به HTTPS نظارت نمایید. شما میتوانید این کار را با استفاده از Google Webmaster Tool و یا سایر ابزارهای تحلیلی انجام دهید تا مطمئن شوید که همه چیز به خوبی پیش میرود. همچنین این کار سبب میشود تا مشکلات احتمالی را در سریعترین زمان ممکن کشف کنید تا از تاثیر مخرب آن روی سئوی وب سایت خود جلوگیری نمایید.
نحوه مهاجرت و تغییر از HTTP به HTTPS
تا اینجا با این دو پروتکل و تفاوت HTTP و HTTPS آشنا شدیم. همچنین مزایای جابجایی از HTTP به HTTPS را نیز شناختیم.
ممکن است فرآیند تغییر از HTTP به HTTPS، بدلیل مراحل زیاد آن، کمی پیچیده به نظر برسد اما در واقعیت این چنین نیست و فقط ممکن است انجام این فرایند کمی زمانبر باشد. برای انجام این کار مراحل زیر را طی کنید:
- تصمیم بگیرید که به چه نوعی از گواهی SSL نیازمند هستید و آن را از شرکت هاستینگ خود خریداری کنید.
- گواهی SSL خود را در اکانت سایت هاستینگ خود نصب و پیکربندی نمایید.
- البته که باید با مدیریت درست مطمئن شوید همه چیز به خوبی پیش میرود، اما در صورت وقوع مشکل با داشتن یک نسخهی پشتیبان کامل از سایت خود، آماده باشید.
- کل وبسایت خود را مرور کنید و تمامی پیوندهای hard Internal را از HTTP به HTTPS بروز نمایید. همچنین مطمئن شوید که نقشه سایت خود را بروز کردهاید.
- Template های خود را مرور کرده و مراجع را به اسکریپتها و تصاویر بروز نمایید.
- مطمئن شوید که فایل robots.txt خود را که شامل نقشه سایت جدید شماست، بروز کردهاید.
- مطمئن شوید که کتابخانههای کدهایتان (مانند کتابخانههای جاوا اسکریپت شما) و هرگونه افزونه شخص ثالثی که در کل سایت شما استفاده میشود، بروز رسانی شده است. این به شما تضمین میدهد که چیزی خراب نشده و هیچ محتوای ناامنی نیز نمایش داده نمیشود.
- پیوندهای خارجی که روی آن کنترل دارید را مانند directory listing مرور نمایید و آنها را به HTTPS تغییر دهید.
- تنظیمات SSL خود را در CDN بروز رسانی نمایید.
- هر پیوندی را که در ابزارهای اتوماسیون بازاریابی (marketing automation) خود استفاده میکنید، از جمله پیوندهای درون ایمیل، بروز رسانی نمایید.
- با مرور کامل تمامی لندینگ پیجهایتان، پیوندها را از HTTP به HTTPS تغییر دهید.
- با استفاده از ابزاری مانند Screaming Frog در URLهای قدیمی خود جستجو کنید تا بتوانید هرگونه ریدارکت و یا زنجیره ریدارکتی ناموفق را کشف کرده و آنها را بروز رسانی کنید.
- مطمئن شوید تمامی ریداریکتهای 301 در سایت شما به صورت page-by-page اجرا میشوند. این به شما کمک میکند تا اطمینان حاصل کنید بازدیدکنندگان سایت شما قطعا به صفحات با URL جدید منتقل خواهند شد و HTTPS همواره link juice هدایت شده را دریافت میکند.
- ریداریکتهای قدیمی که هنوز در حال استفادهاند را فراموش نکنید و پیوندهای آنها را بروز رسانی کنید.
- از HSTS بهره بگیرید تا مرورگر را موظف نماید که همیشه برای سایت شما از HTTPS استفاده کند.
- OCSP stapling را فعال نمایید تا سرور اجازه داشته باشد تشخیص دهد که ایا گواهی SSL همواره معتبر است یا خیر.
نتیجه:
HTTPS دارای مزایاهای زیادی است. باعث میشود هم عملکرد بهتر و هم امنیت بیشتری را داشته باشید. امروزه مشاهده میشود که تمامی مرورگرها کاربران را تشویق میکنند که فقط به وبسایتهایی که در حال استفاده از HTTPS هستند اعتماد داشته باشند زیرا این تنها اقدامی است که میتواند به آنها در کاهش انواع حملات و تهدیدها کمک نماید.
شما میتوانید با استفاده از ابزارهای انلاین اقدام به بررسی میزان قدرتمندی SSL خود کنید. در این مطلب، ضمن تعریف دو پروتکل HTTP و HTTPS، با نحوه مهاجرت، نگرانیهای مربوط به مهاجرت و همچنین تفاوت HTTP و HTTPS آشنا شدیم.