Karışık İçerik

Karışık içerik nedir, etkin tür neden engellenirken pasif tür için uyarı verilir? Güvensiz alt kaynakları ölçekte tespit edip düzeltme: tarayıcı konsolu, CSP raporlama, upgrade-insecure-requests, block-all-mixed-content; CMS ve reklam teknolojilerinin sorunu yeniden üretmesi.

Karışık içerik, HTTPS sayfasının HTTP üzerinden alt kaynak yüklemesidir. Tarayıcıların güncel sınıflandırması, HTTPS'e yükseltilebilir ve engellenebilir şeklindedir. Eski etkin/pasif ayrımı çoğu türde buna uyar ama istisnalar vardır: CORS etkin görseller, srcset/picture ve IP adresli ana makine istekleri yükseltilebilir değil, engellenebilirdir. Etkin karışık içerik — betikler, stil dosyaları, iframe'ler, XMLHttpRequest/fetch — doğrudan engellenir; değiştirilmiş betik bütün sayfayı yeniden yazabilir. HTTP→HTTPS geçişinden sonra siteyi asıl bozan budur; önce bunu düzeltin. Pasif karışık içerik — görseller, ses, video — geçmişte zayıflatılmış kilit göstergesiyle yüklenirdi; artık giderek daha çok otomatik yükseltilir veya engellenir. Bağlantılar ve diğer üst düzey HTTP gezinmeleri karışık içerik değildir. Güvensiz indirmeler de değildir; ilişkili ama ayrı sınırdır. Getirilen kaynakta, işlenmiş/çalışma zamanı durumunda ve gerçek kullanıcı oturumlarında arayın: HTTPS sitesini tarayın, Chrome DevTools konsolunu izleyin — tam ifadeler tarayıcı ve sürüme bağlıdır — veya Content-Security-Policy-Report-Only ihlallerini toplayın. Önce HTTPS karşılığının gerçekten çalıştığını doğrulayın, sonra her alt kaynağı https:// adresine yöneltin. Göreli veya protokole göreli yolları ancak sahipliği ve temel URL davranışını doğruladıktan sonra kullanın. Content-Security-Policy: upgrade-insecure-requests başlığı, farklı kökenlerdekiler dâhil kapsamdaki http:// alt kaynak isteklerini gönderilmeden ve karışık içerik/CSP kontrolleri çalışmadan önce https:// biçimine çevirir. Yükseltme başarısızsa HTTP'ye geri dönüş yoktur. Kaynağı temizlemenin yerine geçmez, güvenlik ağıdır. Üçüncü taraf kökenlere üst düzey gezinmeyi YÜKSELTMEZ; bu yüzden HSTS'nin yerine geçmez. Yönergenin kendisini yalnızca raporlama modunda ayarlamak etkisizdir; izlemek için ayrı raporlama politikası kullanın. CMS veri tabanları — yedek alın ve değiştirmeleri deneme modunda çalıştırın; basit metin değiştirme serileştirilmiş veriyi bozabilir —, eklenti/temalar, servis çalışanları/önbellekler ve reklam/analiz etiketleri sorunu sık yeniden üretir. Sayfa sayfa değil, tarayıcı bot ve CSP raporlamayla ölçekte denetleyin.

TL;DR — Karışık içerik, bir HTTPS sayfasının HTTP üzerinden alt kaynak yüklemesidir. Güncel tarayıcı/W3C sınıflandırması içeriği yükseltilebilir ve engellenebilir diye ayırır. Eski etkin/pasif ayrımı çoğu kaynak türünde aynı risk sınırını açıklar; ancak CORS etkin görseller, srcset/picture adayları ve IP adresli ana makine istekleri gibi istisnalar vardır. Betik, stil dosyası, iframe ve XMLHttpRequest/fetch gibi etkin kaynaklar engellenir; değiştirilmiş bir betik tüm sayfayı yeniden yazabileceği için önce bunları düzeltin. Görsel, ses ve video gibi pasif kaynaklar geçmişte uyarıyla yüklenirdi; artık giderek daha çok otomatik yükseltilir veya engellenir. Bağlantılar ve diğer üst düzey HTTP gezinmeleri karışık içerik değildir; güvensiz indirmeler de ilişkili fakat ayrı bir sınırdır. Sorunu üç katmanda arayın: getirilen kaynak, işlenmiş/çalışma zamanı durumu ve gerçek kullanıcı oturumları. HTTPS sitesini tarayın, Chrome DevTools konsolunu inceleyin (tam metin tarayıcı ve sürüme bağlıdır) ve Content-Security-Policy-Report-Only ihlallerini toplayın. HTTPS karşılığının gerçekten çalıştığını doğruladıktan sonra her alt kaynağı https:// adresine yöneltin. Göreli veya protokole göreli yollar, ancak sahiplik ve temel URL davranışı doğrulandıysa uygundur; evrensel varsayılan değildir. Content-Security-Policy: upgrade-insecure-requests, farklı kökenlerdekiler dâhil kapsamdaki http:// alt kaynak isteklerini gönderilmeden ve karışık içerik/CSP kontrolleri çalışmadan önce https:// biçimine çevirir. Kaynağı düzeltmenin yerine geçmeyen bir güvenlik ağıdır; yükseltme başarısızsa HTTP’ye dönmez ve üçüncü taraf kökenlere üst düzey gezinmeyi yükseltmediği için HSTS’nin yerini tutmaz. Yönergenin kendisini yalnız raporlama moduna koymak etkisizdir; izleme için ayrı bir raporlama politikası kullanın. CMS veri tabanları (yedek alın, değiştirmeyi deneme modunda çalıştırın; basit metin değiştirme serileştirilmiş veriyi bozabilir), eklentiler, temalar, servis çalışanları/önbellekler ve reklam/analiz etiketleri sorunu yeniden üretebilir. Denetimi sayfa sayfa değil, ölçekte yapın.

HTTPS merkezi, karışık içeriği bir geçişin iki yaygın yayın-günü arızasından biri olarak tanıtır; diğeri yönlendirmelerdir. Bu ayrıntılı rehber kaynak sınıflarını, tespit katmanlarını, CSP yönergelerini ve sorunun neden geri döndüğünü açıklar.

Neler karışık içerik sayılır, neler sayılmaz?

Karışık içeriğin kapsamı nettir: sayfadaki bağlantılar değil, sayfanın yüklediği alt kaynaklar söz konusudur. Google’ın tanımı: “A page has mixed content when its initial HTML is loaded over a secure HTTPS connection, but other resources (such as images, videos, stylesheets, and scripts) are loaded over an insecure HTTP connection.” (Türkçesi: İlk HTML güvenli HTTPS ile, diğer kaynaklar güvensiz HTTP ile yükleniyorsa sayfada karışık içerik vardır.)

Bu iddiaya ilişkin kanıt Mixed content occurs when a secure page loads resources over insecure HTTP, and browsers upgrade or block mixed-content requests by resource type. Kapsam: MDN documents current browser categories and behavior; individual browser versions may differ at the margins. Güven düzeyi: yüksek · Doğrulandı: MDN: Mixed content

Yanlış güven veren tuzak bağlantı etiketidir. HTTP sayfasına giden bir <a href="http://…"> bağlantısı karışık içerik değildir; yeni bir belgeye gider, mevcut güvenli sayfaya güvensiz kaynak yüklemez. Bu, yalnızca bağlantı tıklamaları değil, HTTP sayfasına yapılan tüm üst düzey gezinmeler için geçerlidir.

Yine de dış bağlantıları HTTPS hedeflerine yönlendirmek yararlıdır. Modern tarayıcı varsayılanı Referrer-Policy: strict-origin-when-cross-origin altında HTTPS’ten HTTP’ye tıklama Referer başlığını düşürür ve yönlendirme analizini bozabilir. Ancak bu davranış politikaya ve tarayıcıya bağlıdır, evrensel değildir: sayfa veya üstteki proxy/CDN daha gevşek bir Referrer-Policy ayarlarsa geçişte yine yönlendiren bilgi gönderilebilir. Kayıp miktarını söylemeden önce etkin politikayı denetleyin. Her durumda bu, karışık içeriğin kendisi değil, ayrı bir sorundur.

Etkin ve pasif: öncelikleri belirleyen ayrım

Modern tarayıcı ve W3C belgeleri eski etkin/pasif ayrımı yerine öncelikle yükseltilebilir ve engellenebilir içerikten söz eder: tarayıcının sessizce HTTPS üzerinden yeniden denediği kaynaklarla doğrudan reddettiği kaynaklar. Etkin/pasif ayrımı, tarayıcıların bu sınırı neden çizdiğini — kaynağın sayfanın ne kadarını tehlikeye atabileceğini — açıklamak için hâlâ yararlıdır ve Google’ın açıklaması da bu çerçeveyi kullanır. Ancak belirli kaynak türünün güncel resmî sınıfını ararken bunu tek sınıflandırma saymayın; aşağıdaki istisnalara bakın.

Tarayıcılar karışık içeriği güvensiz kaynağın sayfanın ne kadarını tehlikeye atabileceğine göre sınıflandırır. Google’ın ifadesi: “Active mixed content poses a greater threat than passive mixed content.” (Türkçesi: Etkin karışık içerik, pasif karışık içerikten daha büyük tehdit oluşturur.) Öncelik sırasını bu cümle belirlemeli.

Etkin karışık içerik bütün sayfayla etkileşir ve onu ele geçirebilir. Google bunu “scripts, stylesheets, iframes, and any other code the browser can download and execute” diye açıklar (Türkçesi: tarayıcının indirip çalıştırabildiği betikler, stil dosyaları, iframe’ler ve diğer kodlar). Uygulamadaki liste şudur:

  • <script src="http://…"> — en kötü durumdur; araya girilerek değiştirilen betik tüm DOM’u yeniden yazabilir, form verisini dışarı çıkarabilir veya içerik ekleyebilir.
  • <link rel="stylesheet" href="http://…"> — CSS her şeyi gizleyebilir, taşıyabilir veya üstünü örtebilir; bu yüzden etkin sayılır.
  • <iframe src="http://…"> — güvenli belgenizin içindeki güvensiz gömülü belgedir.
  • HTTP’ye XMLHttpRequest / fetch() — sayfanın sonradan işleyeceği güvensiz veridir.
  • Web yazı tipleri, <object>/<embed> kaynakları ve çalıştırılabilir ya da düzeni denetleyen içerik çeken <link> çeşitleri.

Değiştirilmiş etkin kaynak sayfayı yeniden yazabildiğinden, Google’ın ifadesiyle “Most browsers already block this type of content by default to protect users.” (Türkçesi: Çoğu tarayıcı kullanıcıları korumak için bu içerik türünü varsayılan olarak engeller.) Geçişten sonra görünür biçimde bozulan şeylerin nedeni budur: engellenen stil CSS’i kaldırır, engellenen betik etkileşimi öldürür, engellenen iframe boşluk bırakır. Önce etkin içeriği düzeltin. Bu yalnız güvenlik uyarısı değil, işlevsel hatadır.

Pasif (görüntülenen) karışık içerik, Google’a göre “including images, video, and audio” (görseller, video ve ses dâhil) olan ve “doesn’t interact with the rest of the page” (sayfanın geri kalanıyla etkileşmeyen) içeriktir. Araya giren biri görseli değiştirebilir, fakat belgeyi ele geçiremez. Bu yüzden tarayıcılar geçmişte onu yükleyip yalnızca güvenlik göstergesini düşürürdü. Google’ın ifadesiyle: “Until recently, passive mixed content was loaded in all browsers, because blocking it would have broken many websites. This is now beginning to change.” (Türkçesi: Yakın zamana kadar pasif karışık içerik tüm tarayıcılarda yükleniyordu; çünkü engellemek çok sayıda siteyi bozardı. Bu artık değişmeye başlıyor.) Yön, pasif kaynakları mümkün olduğunda HTTPS’e otomatik yükseltmek, yükseltilemeyeni engellemektir. Dolayısıyla “pasif = zararsız” güvenli bir varsayım değildir.

Etkin/pasif ayrımının kapsamadığı istisnalar

Yükseltilebilir/engellenebilir sınırında, genel “görseller yükseltilir, betikler engellenir” düzenine uymayan ve uygulamada sık hata yaratan istisnalar vardır:

  • CORS etkin görsel istekleri yükseltilmez, zorunlu olarak başarısız olur. Normal <img src="http://…"> yükseltilebilir; ancak crossorigin ayarlı görsel isteği karışık içerik algoritmasında farklı ele alınır ve sessizce yükseltilmek yerine başarısız olur.
  • srcset ve <picture> adayları yükseltilebilir değil, engellenebilirdir. Aynı görsel düz src yerine duyarlı görsel mekanizmasıyla istendiğinde engellenebilir sınıfına girer. Her görsel başvurusunun aynı davranacağını varsaymayın.
  • IP adresli ana makineler, normalde yükseltilebilir kaynak türünde bile yükseltilmez, engellenir. http://203.0.113.5/logo.png benzeri başvuru, alan adı karşılığı gibi otomatik yükseltme görmez.
  • İç içe bağlamlar ve çalışanlar kapsam içindedir. Denetimler yalnız üst belgede değil, iframe’lerde ve service/shared worker içinde de uygulanır. Çalışanın güvensiz betik çekmesi de karışık içeriktir.
  • Yerel ve loopback kökenlerin özel kuralları vardır. localhost, loopback adresleri ve file:// bağlamları, TLS olmadan da belirtimde “potansiyel olarak güvenilir köken” sayılabilir. Basit HTTP/HTTPS sezgisi yerel geliştirmeye birebir uymaz.
  • Güvensiz indirmeler ilişkili fakat ayrı bir sınırdır. Güvenli sayfanın http:// üzerinden başlattığı indirme gerçek risktir; ancak bu bölümdeki alt kaynak karışık içerik kurallarıyla değil, ayrı indirme güvenliği davranışıyla yönetilir.
  • Üst düzey HTTP gezinmesi hâlâ karışık içerik değildir. Yukarıdaki bağlantı örneği buna dâhildir; yüklenen alt kaynağın değil, gezinmenin özelliğidir. Diğer istisnaların çoğu burada uygulanmaz.

Karışık içeriği tespit etme: bütün katmanlar

Tek bir düğme yoktur ve aşağıdaki her katman farklı soruyu yanıtlar; bir katmanın temiz çıkması diğerlerini temiz saydırmaz. Getirilen kaynağı (ham HTML’in gerçekte neyi referans gösterdiğini), işlenmiş/çalışma zamanı durumunu (tarayıcının sayfayı ayrıştırıp betikleri çalıştırdıktan sonra ne istediğini) ve gerçek kullanıcı oturumlarını (izin bandı, coğrafi yönlendirme, oturum duvarı veya yalnız belirli koşullarda çalışan üçüncü taraf etiketi arkasında ne olduğunu) ayrı ayrı inceleyin. Katmanlar “tek sayfa”dan “tüm site”ye şöyle ilerler:

  1. Chrome DevTools konsolu (işlenmiş/çalışma zamanı durumu). HTTPS sayfasını açıp konsolu inceleyin. Engellenen etkin içerik, sayfanın HTTPS üzerinden yüklendiğini ancak güvensiz kaynak istediğini, isteğin engellendiğini ve içeriğin HTTPS üzerinden sunulması gerektiğini belirten bir ileti bırakır. Yüklenen pasif içerik engel yerine uyarı üretir. Security paneli (veya Issues sekmesi) bunları sayfa bazında toplar. Bu yöntem nokta denetimi ve belirli düzeltmeyi doğrulamak için hızlıdır; fakat tam ileti metni, panel düzeni ve engellenen türler tarayıcıya ve sürüme bağlıdır. Bu bilgi 2026-07 itibarıyla Chrome karşısında doğrulanmıştır. Sabit bir arayüz metnini alıntılamak yerine teşhis ettiğiniz gerçek sürümü kontrol edin; Firefox, Safari ve Edge’in farklı olmasını bekleyin.

  2. Site tarayıcısı (getirilen kaynak, ölçekte). DevTools sayfa bazındadır; tarama site genelindedir. Ahrefs Site Audit ve Screaming Frog, HTTPS sitede http:// alt kaynaklarına başvuran sayfaları işaretler. Binlerce URL’de karışık içeriği bulmanın gerçekçi yolu budur ve denetimin temel aracıdır. Yine de yalnız kaynağı okur: temiz tarama, işlenmiş sayfanın veya gerçek oturumun temiz olduğunu kanıtlamaz. Niteliksiz “geçti/kaldı” demek yerine sonucu üreten tarayıcıyı/aracı/sürümü kaydedin.

  3. CSP ihlal raporlaması (gerçek kullanıcı oturumları). Gerçek ziyaretçilerin tarayıcıları karışık içeriği size raporlayabilir. Böylece yalnız belirli sayfalarda, kullanıcılarda, izin durumlarında veya denetleyemediğiniz üçüncü taraf etiketlerinden yüklenen kaynaklar yakalanır; tek tarama ya da DevTools kontrolü bu katmana ulaşamaz. web.dev’in ifadesi: “You can use content security policy to collect reports of mixed content on your site. To enable this feature, set the Content-Security-Policy-Report-Only directive by adding it as a response header for your site.” (Türkçesi: Sitenizdeki karışık içerik raporlarını toplamak için içerik güvenliği politikasını kullanabilirsiniz; bunun için yanıt başlığı olarak Content-Security-Policy-Report-Only ayarlayın.) Yalnız raporlama modu politikayı uygulamadan ihlalleri bildirir; böylece engellemeyi açmadan önce üretimdeki sorunu ölçebilirsiniz. Mekanizma modern report-to / Reporting-Endpoints başlığını veya eski report-uri değerini kullanır. Bu, upgrade-insecure-requests yönergesini yalnız raporlama moduna koymaktan farklı genel amaçlı bir politikadır; söz konusu yönerge bu modda çalışmaz.

Bu iddiaya ilişkin kanıt upgrade-insecure-requests in a Content-Security-Policy-Report-Only header is ignored. Kapsam: Content Security Policy upgrade-insecure-requests processing Güven düzeyi: yüksek · Doğrulandı: Upgrade Insecure Requests

Üçünü birlikte kullanın: işlenmiş sayfayı doğrulamak için DevTools, getirilen kaynak envanteri için tarayıcı, yalnız gerçek kullanımda görünen uzun kuyruğu yakalamak için CSP raporları. Temiz tarama, kaynağa ilişkin kanıttır; her izin durumunun, reklam teknolojisi çeşidinin, kişiselleştirme dalının veya çalışanın temiz olduğunun garantisi değildir.

Kaynağında düzeltme

Gerçek düzeltme tek bir başvuruya dokunmadan önce başlar: HTTPS karşılığının gerçekten bulunduğunu, geçerli sertifika sunduğunu ve beklediğiniz içeriği döndürdüğünü doğrulayın. Alan adı çözümleniyor diye yalnız şemayı değiştirmenin güvenli olduğunu varsaymayın. Doğrulama sonrası her alt kaynak HTTPS üzerinden çözülmelidir. Aşağıdaki seçenekler yaklaşık tercih sırasındadır; her biri yazdığınız metinden çok sahiplik ve bağlama bağlıdır:

  • Mutlak HTTPS URL’leri — http://cdn.example.com/app.js değerini https://cdn.example.com/app.js yapın. Açık ve belirsizliğe yer bırakmaz; aşağıdaki sunum bağlamından emin değilseniz en güvenli varsayılandır.
  • Kökten göreli veya göreli yollar — aynı sitede sahip olduğunuz kaynaklar için /assets/app.js sayfanın şemasını otomatik devralır. Google’ın HTTPS rehberliği: “Make sure intrasite URLs and external URLs don’t depend on a specific protocol. Use relative paths or leave out the protocol as in //example.com/something.js.” (Türkçesi: Site içi ve dış URL’leri belirli protokole bağımlı kılmayın; göreli yol kullanın veya protokolü atlayın.) Bunu evrensel değil koşullu öneri sayın. Kaynağa gerçekten sahip olduğunuzu, sayfanın gerçek temel URL’sinin beklendiği gibi çözüldüğünü (<base> etiketi, proxy yolu veya gömülü/AMP bağlamı “göreli” anlamını değiştirebilir) ve istemci kodunun window.location ya da saklı mutlak değerle URL’yi yeniden kurup http:// üretmediğini doğrulayın.
  • Protokole göreli URL’ler (//example.com/something.js) çalışır; fakat tercih edilen evrensel düzeltme değildir. Bunları alışkanlıkla değil, aynı sahiplik ve temel URL denetimlerinden sonra kullanın. Tümü HTTPS olan web’de açık https:// çoğunlukla daha nettir ve dosya HTTP dışı bağlamda açılırsa sürprizi önler. Şemayı sabit kodlamamak için özel nedeniniz varsa protokole göreli yolu seçin.

Ölçekte şablonları tek tek düzenlemezsiniz; ancak üretimde korumasız veri tabanı metin değiştirmesi de çalıştırmayın. http://yourdomain → https://yourdomain düz metin alanlarında genellikle güvenli görünür. CMS içeriği PHP serileştirilmiş dizileri, JSON blokları veya blok düzenleyici verisi gibi yapısal/serileştirilmiş olabilir; basit alt dize değişimi kaydı düzeltmek yerine bozar. Serileştirme biçimini anlayan uygulama araçlarını kullanın, önce veri tabanını yedekleyin ve etkilenen satırları inceleyebilmek için değişimi deneme modunda çalıştırın. Ardından URL üreten az sayıdaki şablon/yapılandırma dosyasını düzeltin; kalanları tarayıcı ve CSP raporlarıyla toplayın.

upgrade-insecure-requests: güvenlik ağı ve sınırları

Önleyici yedek bir Content-Security-Policy yönergesidir. web.dev’in ifadesi: “The upgrade-insecure-requests CSP directive instructs the browser to upgrade insecure URLs before making network requests.” (Türkçesi: Yönerge, ağ istekleri yapılmadan önce güvensiz URL’leri yükseltmesini tarayıcıya söyler.) Şu başlığı ayarlayın:

Content-Security-Policy: upgrade-insecure-requests

MDN’ye göre yönerge “instructs user agents to treat all of a site’s insecure URLs (those served over HTTP) as though they have been replaced with secure URLs (those served over HTTPS).” (Türkçesi: Kullanıcı aracılarının, bir sitenin HTTP üzerinden sunulan tüm güvensiz URL’lerini HTTPS üzerinden sunulan güvenli URL’lerle değiştirilmiş gibi ele almasını sağlar.) MDN bunun “requests to load resources (such as images, scripts, or fonts),” “navigation requests (such as link targets) that are same-origin with the document,” “navigation requests in nested browsing contexts, such as iframes,” ve “form submissions” türlerini yükselttiğini söyler. (Türkçesi: görsel/betik/yazı tipi kaynak istekleri, belgeyle aynı kökendeki gezinme istekleri, iframe gibi iç içe gezinme istekleri ve form gönderimleri.)

Bu iddiaya ilişkin kanıt The upgrade-insecure-requests CSP directive rewrites insecure URLs as secure URLs before requests are made. Kapsam: MDN documents the directive's rewriting behavior and limits; it does not guarantee that an HTTPS version of every resource exists. Güven düzeyi: yüksek · Doğrulandı: MDN: CSP upgrade-insecure-requests

Alıntının ötesinde iki işletim ayrıntısı önemlidir. Birincisi, alt kaynak yükseltmesi aynı kökenle sınırlı değildir; yalnız gezinme yükseltmesi yukarıdaki alıntıya göre aynı kökenlidir. Normal alt kaynak istekleri kökenler arasında da yeniden yazılır; CDN’deki betik veya üçüncü taraf yazı tipi de yükseltilir. İkincisi, yeniden yazma tarayıcının karışık içerik ve CSP denetimleri isteği değerlendirmeden önce olur. Bu yüzden normalde doğrudan engellenecek kaynak yükseltildikten sonra temiz biçimde yüklenebilir; yükseltme engeli önceler.

Göz ardı etmemeniz gereken üç sınır vardır:

  • Üçüncü taraf üst düzey gezinmesini yükseltmez. MDN: “However, top-level navigation requests whose target is a different origin will not be upgraded.” (Türkçesi: Hedefi farklı köken olan üst düzey gezinme istekleri yükseltilmez.) Bu nedenle açıkça HSTS’nin yerine geçmez: “The upgrade-insecure-requests directive will not ensure that users visiting your site via links on third-party sites will be upgraded to HTTPS for the top-level navigation and thus does not replace the Strict-Transport-Security (HSTS) header.” (Türkçesi: Üçüncü taraf bağlantılarından gelen üst düzey gezinmeyi HTTPS’e yükseltmeyi garanti etmez ve HSTS başlığının yerini tutmaz.)
  • Güvenlik ağıdır, düzeltme değildir ve geri dönmez. Kaynak HTTPS üzerinde gerçekten yoksa yükseltilmiş istek doğrudan başarısız olur; özgün http:// sürümüne geri dönmez. Kaynağı temizlemek hâlâ sizin işinizdir; yönerge gerçekten bozuk olanı değil, kaçırdığınızı kapsar.
  • Yalnız raporlama modu yükseltme yapmaz; etkisizdir. upgrade-insecure-requests değerini Content-Security-Policy-Report-Only içine koyarsanız tarayıcı bunu yok sayar: hiçbir şey yeniden yazılmaz ve bu yönerge için hiçbir şey raporlanmaz. Zorunlu uygulamadan önce etkiyi görmek istiyorsanız izin verilmeyen http:// hedeflerini bildiren ayrı, genel amaçlı bir raporlama politikası çalıştırın (yukarıda tespit için kullanılan default-src https: yaklaşımı). Yönergenin kendisini yalnız raporlama yaparak bu görünürlüğü elde edemezsiniz.

block-all-mixed-content: çoğunlukla tarihsel

MDN’ye göre eşlik eden block-all-mixed-content yönergesi “prevents loading any assets over HTTP when the page uses HTTPS” (sayfa HTTPS kullanırken hiçbir varlığın HTTP üzerinden yüklenmesini önler); hem “blockable and upgradable mixed content” türlerini kapsar ve iframe’lere de uygulanır. Uygulamada yerini başka davranışlar almıştır. MDN bunu kullanımdan kaldırılmış ve “obsolete in the specification” (belirtimde geçersiz) olarak işaretler; “Content that isn’t blocked is now always upgraded to a secure connection, so this directive is not needed.” (Engellenmeyen içerik artık daima güvenli bağlantıya yükseltildiği için yönerge gerekli değildir.) Yeni dağıtımda upgrade-insecure-requests kullanın; block-all-mixed-content değerini yalnız devralınabilecek eski bir ayar olarak ele alın. Zaten upgrade-insecure-requests gönderiyorsanız yükseltilebilir istekler için diğer yönergenin yapacağı bir şey kalmaz: yeniden yazma önce gerçekleştiğinden engelleme denetimine gelindiğinde istek ya yükseltilmiş ya da başarısız olmuştur. Yalnız eski değil, UIR dağıtılmış her yerde gereksizdir.

Bu iddiaya ilişkin kanıt block-all-mixed-content is deprecated and obsolete for new deployment. Kapsam: legacy CSP directives Güven düzeyi: yüksek · Doğrulandı: CSP: block-all-mixed-content

CMS neden sorunu yeniden üretir?

Karışık içerik tek seferlik temizlik değildir; birkaç sistem siz bitti sanınca sessizce http:// URL’lerini yeniden ekler:

  • İçerik veri tabanı. WordPress, Drupal ve çoğu CMS’te editörler mutlak http:// URL’li görsel ve gömmeleri doğrudan yazı gövdesine yapıştırır. Bunlar şablonda değil veri tabanında yaşar; kod düzeltmesi dokunmaz. Veri tabanı arama-değiştirmesi bu yüzden gerekir.
  • Temalar ve eklentiler. Yazı tipi, betik veya arka plan görseli için http:// URL’sini sabit kodlayan tema/eklenti, oluşturduğu her sayfada karışık içeriği geri getirir. Eklenti güncellemesi temizlikten sonra sorunu yeniden başlatabilir.
  • Reklam teknolojisi, analiz ve üçüncü taraf etiketleri. Etiket yöneticileri, reklam ağları, sohbet bileşenleri ve analiz parçaları kendi alt kaynaklarını yükler. Sağlayıcı etiketi hâlâ http:// çağırıyorsa bunu kendi kodunuzda düzeltemezsiniz. CSP raporlaması tam bu uzun kuyruk içindir. Kalıcı çözüm, sağlayıcının HTTPS sunmasını sağlamak veya etiketi kaldırmaktır. Çalışan HTTPS uç noktası yoksa seçenekler yine üçtür: sağlayıcı düzeltsin, bağımlılığı değiştirin ya da kaldırın. Güvensiz sürümü güvenle çalıştıran dördüncü yol yoktur.
  • Servis çalışanları ve önbellekler. Service worker hâlâ http:// gösteren yanıtı veya isteği önbelleğe alıp kaynak düzeltildikten sonra da tekrar ziyaretlerde eski başvuruyu sunabilir. Düzeltmenin çalışmadığı sonucuna varmadan önce gizli/önbelleksiz oturumda yeniden üretin. URL’leri değiştiren dağıtım, eski kayıtların yeniden oynatılması yerine çıkarılması için service worker/önbellek sürümünü de artırmalıdır.
  • Eski içerik, e-posta ve yazdırma şablonlarında sabit kodlanan http:// yeniden kullanılabilir.

İşletim sonucu: tespiti bir kez çalıştırılan yayın kontrolü değil, yinelenen denetim (tarayıcı + CSP raporları) hâline getirin.

Karışık içerik ile HSTS nasıl ilişkilidir?

Karışık içerik ve HSTS komşu fakat farklı sorunları çözer; birbirine karıştırmak yaygın hatadır:

  • upgrade-insecure-requests, güvenli sayfanızın istediği alt kaynakları düzeltir; sayfanın çektiği görselleri, betikleri ve iframe’leri yükseltir.
  • HSTS (Strict-Transport-Security), sitenize yapılan üst düzey gezinmeyi daha ilk istekte ve herhangi bir yönlendirme çalışmadan önce HTTPS’e zorlar; SSL stripping saldırısına karşı korur. Google bunu “avoid the cost of a 301 redirect” ve “defeat attacks like SSL Stripping” yollarından biri olarak tanımlar (Türkçesi: 301 yönlendirme maliyetinden kaçınmak ve SSL stripping saldırılarını yenmek).

Birbirlerinin yerine geçmezler. MDN’nin açık ifadesiyle upgrade-insecure-requests, “will not ensure that users visiting your site via links on third-party sites will be upgraded to HTTPS for the top-level navigation and thus does not replace the Strict-Transport-Security (HSTS) header.” (Türkçesi: Üçüncü taraf bağlantılarından gelen kullanıcıların üst düzey gezinmesini HTTPS’e yükseltmeyi garanti etmez ve HSTS başlığının yerini tutmaz.) Tam güçlendirilmiş kurulumda ikisini de kullanın: upgrade-insecure-requests (veya temiz kaynak URL’leri) güvenli sayfada güvensiz yük bırakmaz; HSTS ise kimsenin siteye ilk aşamada HTTP üzerinden ulaşmamasını sağlar. Normal HSTS uyarısı geçerlidir: Google, sertifika doğrulama hatasıyla HTTPS dağıtmayacak kadar sağlam olduğunuzdan emin olmadan HSTS’yi açmamanızı söyler. Preload listesine girmek tek yönlü kapıya yakındır.

Karışık içerik SEO’ya doğrudan zarar verir mi?

Önce doğrudan etkileri ele alın; denetleyebildiğiniz bunlardır. Karışık içerik her şeyden önce güvenlik ve işlevsellik sorunudur. Engellenen etkin kaynaklar işlemeyi ve etkileşimi doğrudan bozar. Eksik stil veya betik, arama motorunun ne yaptığından bağımsız gerçek gerilemedir. Sıralamayı düşünmeden önce düzeltmek için bu yeterlidir.

SEO sonuçları gerçektir fakat koşulludur; doğrudan ya da garantili değildir. Google’ın güncel resmî rehberliği karışık içeriği düzeltmenin doğrudan sıralama artışı sağladığını ortaya koymaz. HTTPS sıralama sinyali URL’nin https:// ile başlayıp başlamadığına, yani şemaya dayanır; alt kaynak temizliği denetimi değildir. Tek güvensiz görsel kendi başına “HTTPS sinyalini” kaybettirmez. Ancak gerçekte bozulan şeye bağlı dolaylı etkiler görülebilir: Googlebot, CSS veya JS karışık içerik olarak engellenmiş sayfanın bozuk ya da eksik sürümünü işleyip dizine ekleyebilir; düşürülen güvenlik göstergesi sıralama değişmese bile kullanıcı güvenini, etkileşimi ve dönüşümü azaltabilir. Google’ın HTTPS kanonik tercihi de koşulludur: geçersiz sertifikalar, güvensiz bağımlılıklar, HTTPS’ten HTTP’ye yönlendirmeler veya sayfadaki çelişkili kanonik sinyaller, karışık içerikten bağımsız olarak seçilen URL’yi değiştirebilir. İşleme, dizine ekleme, kanonikleştirme ve analiz etkilerini kendi sayfalarınızda doğrulanacak unsurlar sayın; evrensel sonuçlar vaat etmeyin. Karışık içeriği önce güvenlik ve işlevsellik nedenleriyle düzeltin.

Bu konu daha geniş SEO için HTTPS rehberinin içindedir; geçiş oyun planını, sıralama sinyalinin ağırlığını ve HSTS’yi bütünüyle kapsar. Sertifikanın kendisini (zincir hataları, süre dolumu, DV/OV/EV) inceliyorsanız o ayrı fakat kardeş bir ayrıntılı rehberdir.

Uzman notu ekle

Uzman alıntısını sabitle

Yeni biri mi? Sahipsiz profilini şu bağlantıdan oluşturun: /admin/experts/ → Uzman alıntısını sabitle Bu işlemi önce tamamlayın.