معمای قفل ناامن: وقتی SSL فعال است اما سایت امن نیست!
برای فعالسازی پروتکل امنیتی HTTPS هزینه کردهاید، گواهی SSL روی سرور نصب شده و آدرس سایت با https:// باز میشود؛ اما در کمال تعجب میبینید علامت قفل امن کنار آدرس بار مرورگر قرمز، زرد یا همراه با علامت تعجب است و مرورگر کروم پیام Not Secure میدهد!
این مشکل آزاردهنده دقیقاً به دلیل خطای محتوای ترکیبی یا همان Mixed Content رخ میدهد. در این مقاله یاد میگیرید که این خطا چطور شکل میگیرد و چطور میتوان آن را برای همیشه ریشهکن کرد.
محتوای ترکیبی (Mixed Content) چطور به وجود میآید؟
وقتی یک کاربر صفحهای را با پروتکل امن https:// باز میکند، انتظار دارد تمام داراییهای آن صفحه (تصاویر، فونتها، فایلهای CSS و کدهای جاوااسکریپت) نیز از طریق مسیر امن و رمزنگاریشده لود شوند.
اما اگر در کدهای صفحه، آدرس یک عکس، یک فونت قدیمی یا اسکریپت آمارگیر همچنان با پروتکل ناامن http:// فراخوانی شود، اتصال امن اصطلاحاً «آلوده» میشود. یک هکر میتواند از طریق همان منبع رمزنگارینشده محتوای صفحه را شنود یا دستکاری کند.
دو نوع خطرناک محتوای ترکیبی
- محتوای ترکیبی غیرفعال (Passive/Display Mixed Content): تصاویری که با
http://لود میشوند. مرورگر معمولاً تصویر را لود میکند، اما علامت قفل امن را برمیدارد و هشدار میدهد. - محتوای ترکیبی فعال (Active Mixed Content): اسکریپتها، فونتها، استایلها یا iframeهایی که با
http://فراخوانی میشوند. مرورگرهای مدرن (مثل کروم، فایرفاکس و سافاری) این منابع را به طور کامل مسدود (Block) میکنند! در نتیجه قالب سایت به هم میریزد یا اسکریپتهای حیاتی اجرا نمیشوند.
پیامد Mixed Content برای سئو و بیزینس
- افت اعتماد کاربر: کاربران با دیدن علامت اخطار امنیتی تصور میکنند سایت هک شده و بلافاصله صفحه پرداخت یا سبد خرید را ترک میکنند.
- سیگنال منفی رتبهبندی: پروتکل امن HTTPS یکی از سیگنالهای رسمی تجربه صفحه (Page Experience) گوگل است. سایتی که Mixed Content فعال دارد، سیگنال امنیتی کامل را دریافت نمیکند.
۳ راهکار قطعی برای حل خطای Mixed Content
۱. استفاده از هدر ارتقای خودکار (Upgrade-Insecure-Requests)
با اضافه کردن این دستور ساده به وبسرور یا هدر متای صفحه، به مرورگر دستور میدهید هر منبعی که با http:// صدا زده شد را خودکار به https:// ارتقا دهد:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
۲. جستجو و جایگزینی در دیتابیس (برای سایتهای وردپرسی)
بسیاری از آدرسهای ناامن در متن نوشتهها، ابزارکها یا گزینههای قالب در دیتابیس هاردکد شدهاند. با افزونههایی مثل Better Search Replace میتوانید عبارت http://yourdomain.com را جستجو و با https://yourdomain.com جایگزین کنید.
۳. بررسی فایلهای قالب و افزونهها
گاهی توسعهدهنده در کدهای قالب یک کتابخانه خارجی (مثل jQuery یا فونت) را به صورت دستی با http:// اضافه کرده است. این فایلها را باز کرده و آدرس آنها را به https:// تغییر دهید.
ابزار ممیزی آنالیز رایگان سئو تمام صفحات سایت را خزش کرده و اگر منبع ناامنی در صفحه وجود داشته باشد، آدرس دقیق آن را در بخش شواهد گزارش ثبت میکند.