İletişim

Karışık İçerik (Mixed Content) Nedir?

Kısa tanım

Karışık içerik (mixed content), HTTPS üzerinden yüklenen bir sayfanın görsel, betik, stil dosyası veya iframe gibi kaynaklardan bazılarını şifresiz HTTP üzerinden çağırmasıdır. Bu kaynaklar yolda okunabilir ya da değiştirilebilir. Güncel tarayıcılar görsel, ses ve video isteklerini otomatik olarak HTTPS'e yükseltir, betik ve stil dosyası gibi diğer türleri ise engeller; bu da sayfanın bozuk görünmesine yol açabilir.

Diğer adları: mixed content, karma içerik, HTTPS karışık içerik uyarısı

HTTPS sayfadaki bir görselin HTTP ile yüklenmesinin karışık içeriğe yol açtığını ve tüm kaynakların HTTPS olması gerektiğini gösteren şema

Neden tek bir HTTP kaynağı bile sorun?

HTTPS, tarayıcı ile sunucu arasındaki bağlantıyı şifreler ve araya giren birinin içeriği okumasını ya da değiştirmesini engeller. Ancak bu koruma yalnızca HTTPS ile gelen kaynaklar için geçerlidir. Sayfa güvenli yüklenip içindeki bir betik http:// ile çağrılıyorsa, ağdaki bir saldırgan o betiği değiştirerek sayfanın tamamını kontrol edebilir. Görseller daha az tehlikeli görünse de değiştirilmiş bir görsel yanıltıcı bilgi gösterebilir ya da bir düğmenin anlamını değiştirebilir.

Tarayıcılar ne yapıyor?

Güncel tarayıcılar karışık içeriği iki gruba ayırır:

GrupÖrneklerTarayıcı davranışı
Yükseltilebilirsrc ile verilen <img>, <audio>, <video>, <source>İstek kendiliğinden https://'e çevrilir. Sunucu HTTPS'te dosyayı vermezse kaynak yüklenmez.
Engellenebilir<script>, stil dosyaları, <iframe>, fetch() ve XHR, web fontları, srcset ya da <picture> içindeki görsellerİstek doğrudan engellenir.

Ana makinesi alan adı yerine IP adresi olan istekler (http://203.0.113.10/logo.png gibi) yükseltilmez, engellenir. Güvenli bir sayfadan HTTP ile başlatılan dosya indirmeleri de varsayılan olarak engellenir ya da kullanıcıya uyarıyla sunulur. Tarayıcıların bu davranışı zamanla sıkılaştığı için eski "pasif içerik gösterilir" bilgisine güvenmek yanıltıcıdır; ayrıntılar MDN'nin karışık içerik sayfasında güncel tutulur.

Sitede nasıl ortaya çıkar?

Karışık içeriğin en yaygın kaynağı HTTP'den HTTPS'e geçiştir. Sunucu yönlendirmesi kurulur, sayfalar HTTPS açılır; ama veritabanındaki eski yazılarda, tema ayarlarında, sayfa oluşturucu bloklarında ya da CSS dosyalarındaki url() değerlerinde mutlak http:// adresleri kalır. Bir diğer kaynak, yalnızca HTTP sunan eski bir üçüncü taraf widget'ı veya reklam betiğidir. Bu yüzden sorun, site taşıma sonrası kontrol listesinin standart bir maddesidir.

Bulmak ve düzeltmek

  1. Tarayıcı konsoluna bakın. Chrome ve Firefox, her yükseltilen ya da engellenen istek için konsolda adresiyle birlikte uyarı gösterir.
  2. Kaynağı düzeltin. Veritabanında ve şablonlarda http://alanadi geçen adresleri https:// ile değiştirin; üçüncü taraf kaynakların HTTPS sürümünü kullanın, sunmayanları kaldırın ya da kendi sunucunuza taşıyın.
  3. Geçiş dönemi için CSP kullanın. İçerik Güvenlik Politikası'nın upgrade-insecure-requests yönergesi, sayfadaki tüm HTTP isteklerini (engellenebilir türler dahil) HTTPS'e yükseltir. Eski block-all-mixed-content yönergesi ise kullanımdan kaldırılmıştır.
Content-Security-Policy: upgrade-insecure-requests

CSP yönergesi bir güvenlik ağıdır, kalıcı çözüm değildir: kaynak HTTPS'te yoksa yükseltilen istek yine başarısız olur. Kalıcı düzeltme, adresleri kaynağında güncellemektir. HSTS ise farklı bir sorunu çözer; kullanıcının siteye HTTP ile girmesini önler ama sayfa içindeki üçüncü taraf HTTP kaynaklarını düzeltmez.

SEO tarafında karışık içerik doğrudan bir sıralama cezası değildir; ancak engellenen bir stil dosyası ya da betik sayfanın bozuk render edilmesine yol açabilir ve sayfa deneyimini zayıflatır. SEO Analiz Aracı, HTTPS sayfalardaki HTTP kaynakları ayrı bir bulgu olarak raporlar.

İlgili terimler

← Sözlüğe dön