Karma İçerik (Mixed Content) Sorunu ve Çözümü
Bir web sitesinin HTTPS üzerinden sunulması, ziyaretçi ile sunucu arasındaki veri alışverişinin şifrelenmesini ve sunucu kimliğinin doğrulanmasını sağlar. Ancak sayfa şifreli bir bağlantıyla açılmış olsa bile, sayfa içine gömülü bazı kaynaklar hâlâ şifresiz HTTP protokolü üzerinden çağrılıyorsa bu durum karma içerik olarak tanımlanır. Karma içerik, adres çubuğunda görünen güvenlik göstergesi ile sayfanın gerçek davranışı arasında bir tutarsızlık oluşturur ve bu tutarsızlık hem güvenlik hem de işlevsellik açısından sonuç doğurur.
Bir sayfanın şifreli bağlantıyla yüklenmesi, o sayfada yer alan bütün kaynakların da otomatik olarak şifrelendiği anlamına gelmez. Görsel, stil dosyası, betik, yazı tipi, video veya çerçeve gibi her kaynak ayrı bir istek olarak gönderilir ve her isteğin kendi protokolü bulunur. Bu isteklerden herhangi biri HTTP üzerinden yapıldığında, şifreli ana doküman ile şifresiz kaynak aynı sayfa içinde bir arada bulunur. Karma içerik sorununun temel kaynağı bu ayrışmadır.
Karma İçerik Nasıl Oluşur?
Karma içerik, genellikle sitenin HTTPS'e geçiş sürecinde ortaya çıkar. Site genel olarak şifreli protokole taşınmış olsa da, veritabanında saklanan eski içeriklerde, tema dosyalarında, hazır şablonlarda veya yönetim panelindeki alanlarda tam adres biçiminde yazılmış HTTP bağlantıları kalabilir. Bu bağlantılar, sayfa her görüntülendiğinde tarayıcıya şifresiz kaynak talebi olarak iletilir.
Sorunun bir diğer kaynağı üçüncü taraf hizmetlerdir. Reklam ağları, harita servisleri, yazı tipi sağlayıcıları, ölçümleme betikleri, sohbet araçları ve gömülü video oynatıcıları sayfaya dışarıdan eklenir. Bu hizmetlerden bazılarının yalnızca HTTP sunduğu adresler kullanıldığında, sitenin kendi altyapısı güvenli olsa dahi sayfa karma içerik barındırır. Benzer şekilde, kullanıcıların yorum veya içerik alanlarına eklediği dış kaynak adresleri de aynı sonucu doğurur.
Protokolü belirtilmeyen veya protokolle uyumlu biçimde yazılmış adresler de değerlendirme dışında tutulmamalıdır. Bu tür adresler tarayıcı tarafından sayfanın protokolüne uyarlanır ve çoğu durumda sorun çıkarmaz; ancak şifreli protokolü desteklemeyen bir sunucuya işaret ediyorsa istek başarısız olur. Bu nedenle kaynak adreslerinin protokolden bağımsız biçimde yazılması tek başına yeterli bir çözüm değildir.
Tarayıcıların Karma İçeriğe Yaklaşımı
Modern tarayıcılar karma içeriği kullanıcıya sessizce sunmaz. Şifreli bir sayfada şifresiz kaynak tespit edildiğinde tarayıcı, kaynağın türüne göre farklı davranış sergiler. Etkin olarak sınıflandırılan kaynaklar engellenir ve geliştirici konsolunda hata mesajı üretilir. Edilgen kaynaklar ise geçmişte yüklenmeye devam ediyordu; günümüzde birçok tarayıcı bu istekleri otomatik olarak şifreli sürüme yükseltmekte, yükseltme başarısız olursa kaynağı engellemektedir.
Bu davranışın pratik sonucu, sayfanın bir bölümünün hiç görüntülenmemesi, biçimlendirmenin bozulması ya da işlevlerin çalışmamasıdır. Kullanıcı açısından bakıldığında sayfa eksik veya kırık görünür; teknik açıdan bakıldığında ise tarayıcı, şifreli sayfanın bütünlüğünü korumak için kaynağı reddetmiştir.
Etkin ve Edilgen Karma İçerik Ayrımı
Etkin karma içerik, sayfanın davranışını veya veri akışını doğrudan etkileyebilen kaynakları kapsar. Betikler, çerçeveler, asenkron veri istekleri, stil dosyaları ve form hedefleri bu grupta değerlendirilir. Bu kaynaklar sayfa bağlamında kod çalıştırabildiği veya kullanıcı verisini iletebildiği için tarayıcılar tarafından daha katı biçimde ele alınır ve genellikle engellenir.
Edilgen karma içerik ise görsel, ses ve video gibi sayfanın işlevini değiştirmeyen, yalnızca görüntülenen öğeleri kapsar. Bu kaynaklar kod çalıştıramaz; ancak yine de şifresiz bir kanaldan geldikleri için izlenebilir, değiştirilebilir veya engellenebilir. Tarayıcılar bu grubu daha esnek ele almakla birlikte, güvenlik politikaları zaman içinde her iki grubu da şifreli protokole yönlendirecek biçimde sıkılaşmaktadır.
Karma İçeriğin Oluşturduğu Güvenlik Riskleri
Şifresiz bir kanaldan yüklenen kaynak, ağ üzerinde araya giren bir üçüncü taraf tarafından okunabilir ve değiştirilebilir. Bu durum, saldırganın sayfaya eklenen bir betiği kendi içeriğiyle değiştirmesine, dolayısıyla şifreli sayfanın güvenilirliğini kullanarak kod çalıştırmasına olanak tanır. Şifreli ana dokümanın sağladığı koruma, şifresiz tek bir betik nedeniyle büyük ölçüde etkisiz kalabilir.
Bu zafiyet üzerinden oturum bilgileri, çerezler, form verileri ve kullanıcıya özel içerikler ele geçirilebilir. Sayfa içeriği değiştirilerek yanıltıcı bilgi gösterilebilir, kullanıcılar farklı bir adrese yönlendirilebilir veya zararlı yazılım dağıtımı yapılabilir. Ayrıca şifresiz kaynak talepleri, kullanıcının hangi sayfayı ziyaret ettiği bilgisini ağ üzerinde gözlemleyebilen taraflara açık eder.
Güvenlik riski yalnızca teknik saldırılarla sınırlı değildir. Tarayıcının adres çubuğunda gösterdiği güvenlik göstergesi, kullanıcıların siteye duyduğu güvenin temel unsurlarından biridir. Karma içerik nedeniyle bu gösterge zayıfladığında veya bir uyarıya dönüştüğünde, kullanıcı davranışı olumsuz etkilenir. Kurumsal bir sitenin güvenilirliği, teknik olarak doğru yapılandırılmış bir bağlantıdan doğrudan etkilenir.
Karma İçeriğin Tespit Edilmesi
Karma içeriği tespit etmenin ilk adımı, tarayıcının geliştirici araçlarını kullanmaktır. Sayfa yüklendiğinde konsol sekmesinde karma içerikle ilgili uyarı ve hata kayıtları listelenir. Bu kayıtlar, sorunlu kaynağın adresini ve türünü gösterir. Ağ sekmesi üzerinden yapılan istekler incelendiğinde, protokol bilgisi şifresiz olan kaynaklar doğrudan görülebilir.
Tespit sürecinde yalnızca ana sayfayı incelemek yeterli değildir. Ziyaretçilerin eriştiği tüm şablonlar, arama sonuç sayfaları, formlar, üyelik ekranları ve dinamik olarak üretilen içerikler ayrı ayrı değerlendirilmelidir. İçerik yönetim sistemlerinde eski kayıtların gövdesinde kalan şifresiz adresler, yalnızca ilgili sayfa açıldığında görünür hâle gelir.
Site genelinde tarama yapan araçlar, tüm sayfaları gezerek şifresiz kaynak taleplerini raporlayabilir. İçerik Güvenliği Politikası desteğiyle yapılandırılan raporlama modu da, tarayıcının engellediği veya yükselttiği istekleri sunucuya bildirir. Bu yöntem, kullanıcı akışlarının tamamını elle test etmeye gerek kalmadan sorunlu kaynakların haritasını çıkarmayı sağlar.
Karma İçeriğin Giderilmesi
Çözümün temeli, sayfada çağrılan her kaynağın şifreli protokol üzerinden sunulmasını sağlamaktır. Bu doğrultuda atılacak ilk adım, içerik ve şablonlarda tam adres biçiminde yazılmış şifresiz bağlantıların tespit edilip güncellenmesidir. Kaynak adreslerinin siteye göreli biçimde yazılması, gelecekte protokol değişikliklerinde aynı sorunun tekrar oluşmasını engeller.
Sunucu tarafında, şifresiz tüm taleplerin şifreli sürüme kalıcı olarak yönlendirilmesi gerekir. Bu yönlendirme, hem kullanıcıların hem de arama motoru tarayıcılarının siteye tek bir protokol üzerinden erişmesini sağlar. Sertifika geçerlilik süresi, zincir bütünlüğü ve alan adı kapsamı düzenli olarak kontrol edilmelidir; süresi geçmiş veya eksik zincirli bir sertifika, şifreli kaynakların da başarısız olmasına yol açar.
Protokol Yükseltme ve Politika Yönergeleri
Sayfa içinde kalan şifresiz istekleri tarayıcı düzeyinde yükseltmek için kullanılan bir politika yönergesi bulunur. Bu yönerge etkinleştirildiğinde tarayıcı, şifresiz kaynak taleplerini otomatik olarak şifreli sürüme çevirir. Yükseltme başarısız olursa kaynak yüklenmez; bu nedenle yönerge, altyapı hazır olduğunda devreye alınmalıdır. Kaynakları tamamen engelleyen katı bir politika yönergesi de, geçiş sürecinin son aşamasında uygulanabilir.
İçerik Güvenliği Politikası, yalnızca karma içeriği değil, sayfada çalışmasına izin verilen kaynakların bütününü tanımlar. Politika önce raporlama modunda çalıştırılarak ihlallerin kaydı tutulur, ardından uygulama moduna alınır. Bu yaklaşım, beklenmedik biçimde çalışmayan işlevlerin canlı ortama taşınmadan önce belirlenmesini sağlar.
Üçüncü Taraf Kaynakların Yönetimi
Dışarıdan eklenen hizmetlerin şifreli protokol desteği sunup sunmadığı doğrulanmalıdır. Şifreli sürümü bulunmayan bir hizmet, sayfada tutulduğu sürece karma içerik kaynağı olmaya devam eder. Bu durumda hizmetin şifreli sürümü kullanılmalı ya da ilgili bileşen sayfadan kaldırılmalıdır. Gömülü çerçeveler, yazı tipi sağlayıcıları, reklam alanları ve ölçümleme betikleri bu kapsamda ayrıca değerlendirilir.
Kullanıcıların içerik ekleyebildiği alanlarda, şifresiz kaynak adreslerinin girilmesini sınırlayan doğrulama kuralları uygulanabilir. Böylece yeni içerikler eklendikçe aynı sorunun yeniden üretilmesi önlenir. Site genelindeki şablonlar, bileşenler ve eklentiler HTTPS geçişinden sonra gözden geçirilmelidir.
SEO ve İndeksleme Açısından Etkileri
Arama motorları, bir sayfanın şifreli protokolle sunulmasını olumlu bir teknik sinyal olarak değerlendirir. Buna karşılık karma içerik, doğrudan bir indeksleme engeli oluşturmasa da sayfanın tarayıcıda eksik veya kırık görüntülenmesine neden olur. Engellenen bir görsel, yüklenmeyen bir stil dosyası ya da çalışmayan bir betik, kullanıcı deneyimini ve sayfa kalitesine ilişkin değerlendirmeleri olumsuz etkileyebilir.
Şifresiz kaynakların taranması ve dizine eklenmesi, sitenin teknik bütünlüğünü de zayıflatır. Aynı içeriğin farklı protokoller üzerinden erişilebilir olması, tercih edilen adresin belirsizleşmesine yol açar. Bu nedenle kalıcı yönlendirmeler, site haritaları ve tercih edilen alan adı tanımları tek bir şifreli sürüme işaret etmelidir.
Arama motoru konsollarındaki güvenlik ve HTTPS raporları, taranan sayfalarda tespit edilen şifresiz kaynakları listeler. Bu raporların düzenli olarak izlenmesi, geçiş sürecinde gözden kaçan kaynakların belirlenmesine yardımcı olur. Sertifika hataları ve yönlendirme zincirleri de aynı raporlarda görünür; bu nedenle teknik denetimler tek seferlik değil, sürekli bir uygulama olarak planlanmalıdır.
Sürdürülebilir Bir Yapı İçin Kontrol Adımları
- Sayfa şablonlarında, içerik gövdesinde ve veritabanı kayıtlarında şifresiz tam adreslerin taranması ve güncellenmesi.
- Kaynak çağrılarının siteye göreli veya şifreli mutlak adreslerle yazılması.
- Şifresiz tüm isteklerin kalıcı yönlendirme ile şifreli sürüme taşınması.
- Sertifika geçerlilik süresinin ve zincir bütünlüğünün düzenli aralıklarla doğrulanması.
- Üçüncü taraf hizmetlerin şifreli protokol desteğinin kontrol edilmesi.
- İçerik Güvenliği Politikasının raporlama modunda başlatılıp kademeli olarak sıkılaştırılması.
- Yeni içerik girişlerinde şifresiz kaynak adreslerinin kabul edilmemesi.
- Tarayıcı konsolu ve arama motoru konsolu raporlarının düzenli olarak incelenmesi.
Karma içerik, tek bir ayar değişikliğiyle kalıcı olarak çözülen bir durum değildir. Sitenin içerik yapısı, şablonları, dış entegrasyonları ve sunucu yapılandırması birlikte ele alındığında sorun kapsamlı biçimde giderilebilir. Şifreli protokolün yalnızca adres çubuğunda görünen bir gösterge olmaktan çıkıp sayfadaki bütün kaynaklara yayılması, hem güvenlik hem de kullanıcı deneyimi açısından tutarlı bir sonuç üretir.