İLE %100 UYUMLU: Güvenli E-Posta Hosting Hizmetimizi 1 AY ÜCRETSİZ Deneyin! HEMEN OLUŞTURUN
Dijital dünyada güvenliğin standartları her geçen gün daha da katılaşıyor. Web sitenize yepyeni bir SSL sertifikası kurdunuz, tüm yönlendirmelerinizi yaptınız ve tarayıcınızın adres çubuğunda o güven veren yeşil kilidi (veya modern tarayıcılardaki güvenli ikonunu) görmeyi heyecanla bekliyorsunuz. Ancak adres çubuğuna baktığınızda hevesiniz kursağınızda kalıyor; kilit ikonu kırık, üzerinde ünlem işareti var veya tarayıcı size “Bağlantınız tam olarak güvenli değil” (Your connection is not fully secure) şeklinde can sıkıcı bir uyarı veriyor.
Siteniz HTTPS protokolü üzerinden çalışmasına rağmen bu hatayı alıyorsanız, siber güvenlik terminolojisinde çok iyi bilinen bir problemle karşı karşıyasınız demektir: Mixed Content (Karışık İçerik) Hatası.
2026 yılının modern web tarayıcıları (Google Chrome, Firefox, Edge, Safari), kullanıcı güvenliğini maksimize etmek adına karmaşık içeriklere karşı sıfır tolerans politikası uygular. Bu hata sadece sitenizin amatör görünmesine neden olmakla kalmaz; aynı zamanda arama motoru sıralamalarınızı (SEO) düşürür ve ziyaretçilerinizin sitenizi terk etmesine yol açar. Bu derinlemesine rehberde; Mixed Content hatasının teknik arka planını, aktif ve pasif içerik ayrımlarını, hatanın kaynağını nasıl tespit edeceğinizi ve altyapınız ne olursa olsun bu sorunu kökünden nasıl çözeceğinizi tüm detaylarıyla inceliyoruz.
İçindekiler
Bir web sayfası sadece metinlerden oluşmaz. Sayfayı açtığınızda arka planda resimler, videolar, CSS (tasarım) dosyaları, JavaScript (dinamik işlev) kodları ve dışarıdan çağrılan fontlar gibi onlarca farklı kaynak yüklenir.
Mixed Content, bir web sayfasının ana iskeleti güvenli bir HTTPS bağlantısı üzerinden yüklenirken, sayfanın içindeki bir veya daha fazla alt kaynağın (örneğin bir görselin veya script dosyasının) güvensiz olan HTTP protokolü üzerinden çağrılması durumudur.
Adından da anlaşılacağı üzere, sayfanın içeriği “güvenli” ve “güvensiz” öğelerin bir karışımı haline gelmiştir. Tarayıcı, ana sayfanın şifreli bir tünelden geldiğini bilir, ancak sayfanın ortasındaki bir logonun şifresiz ve açık bir yoldan geldiğini fark ettiğinde, kullanıcıyı uyarmak için kilit ikonunu bozar.
Modern tarayıcılar, karışık içerikleri barındırdıkları risk potansiyeline göre iki farklı kategoriye ayırır ve onlara farklı tepkiler verir. Sorunu çözerken hangi türle karşı karşıya olduğunuzu bilmek çok önemlidir.
Pasif içerikler, sayfanın yapısını veya kullanıcının davranışlarını doğrudan değiştiremeyen, yalnızca sayfada sergilenen öğelerdir.
<img>
<video>
<audio>
Aktif içerikler, web sayfasının bütünlüğünü, tasarımını ve işleyişini doğrudan kontrol edebilen kaynaklardır. Bu tür, güvenlik açısından tam bir kabustur.
<script>
<link rel="stylesheet">
Sitenizin adres çubuğunda uyarıyı gördünüz; peki ama yüzlerce kod satırı arasında hangi görselin veya dosyanın HTTP ile çağrıldığını nasıl bulacaksınız?
Bağımsız bir seyahat blogu yazarı olan Vedat, blogunu HTTPS’ye geçirdikten sonra bu hatayı alır. Vedat, sorunun kaynağını bulmak için en pratik yöntem olan Tarayıcı Geliştirici Araçlarını (Developer Tools) kullanır:
eski-foto.jpg
Alternatif Araçlar: Sayfalarınız çok fazlaysa ve manuel kontrol zor geliyorsa, WhyNoPadlock.com veya JitBit SSL Check gibi ücretsiz çevrimiçi araçlara sitenizin URL’sini girerek, tüm sitenizdeki karışık içeriklerin bir raporunu saniyeler içinde alabilirsiniz.
WhyNoPadlock.com
JitBit SSL Check
Eğer sitenizin altyapısı WordPress ise, bu hatanın en büyük sebebi veritabanınızda (eski yazılar, medya kütüphanesi dosyaları) URL’lerin hala http:// olarak kayıtlı kalmış olmasıdır.
http://
E-ticaret sitesi yöneticisi Şirin, ürün sayfalarında yaşadığı Mixed Content hatasını çözmek için veritabanına doğrudan müdahale etmesi gerektiğini bilir ve şu adımları izler:
Veritabanında toplu değişiklik yapmadan önce, olası bir çökme ihtimaline karşı hosting paneli (cPanel vb.) üzerinden veritabanının ve dosyaların eksiksiz bir yedeğini alır.
Şirin, WordPress paneline girerek “Better Search Replace” adlı eklentiyi kurar ve etkinleştirir.
[http://sirinin-butigi.com](http://sirinin-butigi.com)
[https://sirinin-butigi.com](https://sirinin-butigi.com)
Elementor, WPBakery gibi sayfa oluşturucular kullanıyorsanız, bu araçlar bazen eski HTTP linklerini kendi iç (CSS) dosyalarında saklarlar. WordPress panelinizden (örneğin Elementor için: Elementor > Araçlar > CSS ve Veriyi Yeniden Oluştur) önbellekleri temizlemeniz gerekir. Ayrıca WP Rocket veya LiteSpeed Cache kullanıyorsanız, tüm site önbelleğini (Purge All Cache) temizlemeyi unutmayın.
Eğer binlerce sayfalık, özel yazılım (Örn: React, Laravel veya Node.js) ile kodlanmış bir projeniz varsa, her sayfadaki kodları tek tek bulup değiştirmek imkansız bir hal alabilir. Bu noktada, modern tarayıcıların sunduğu muazzam bir kalkan olan Content-Security-Policy (CSP) başlığını kullanarak sorunu sunucu katmanında kökünden çözebilirsiniz.
Kıdemli sistem yöneticisi Korhan, sunucusuna eklediği küçük bir komutla tarayıcılara şu emri verir: “Sayfamın içinde HTTP ile çağrılan eski bir kod veya görsel bulursan, bana sormadan onu anında HTTPS’ye çevirerek yükle!”
Korhan’ın bu emri vermek için sunucu altyapısına göre kullandığı kodlar şunlardır:
Apache Sunucular İçin (.htaccess dosyasına eklenir):
Apache
<IfModule mod_headers.c> Header always set Content-Security-Policy "upgrade-insecure-requests;" </IfModule>
Nginx Sunucular İçin (nginx.conf dosyasına eklenir):
Nginx
add_header Content-Security-Policy "upgrade-insecure-requests;";
Bu mucizevi upgrade-insecure-requests direktifi, tarayıcının kod tabanındaki tüm güvensiz istekleri havada (on the fly) HTTPS’ye yükseltmesini sağlar. Ancak burada dikkat edilmesi gereken ufak bir detay vardır: Eğer dışarıdan çektiğiniz kaynak (Örneğin 3. parti bir sayaç kodu veya dış bir sunucudaki görsel) kendi tarafında HTTPS desteklemiyorsa, tarayıcı bu öğeyi HTTPS’ye yükseltemeyecek ve öğe sayfada kırık görünecektir. Bu durumda o dış kaynağı sistemden tamamen silmek veya HTTPS destekleyen bir alternatifiyle değiştirmek tek yoldur.
upgrade-insecure-requests
Bazen hatanın kaynağı sizin sitenizdeki bir dosya değil, sitenize dışarıdan entegre ettiğiniz bir eklenti (Widget) veya API (Application Programming Interface) olabilir. Örneğin, sitenizin kenar çubuğuna (sidebar) yerel bir hava durumu eklentisi eklediniz ve bu eklentinin sağlandığı site SSL sertifikasına sahip değil. Tarayıcı, ana siteniz güvenli olsa bile, hava durumu eklentisi HTTP üzerinden çalıştığı için sitenizi güvensiz olarak damgalar.
Böyle durumlarda “Search Replace” veya diğer yöntemler işe yaramaz. Çünkü kodun kontrolü sizde değildir. Yapmanız gereken tek şey, kodlarını güvensiz sunan o dış servis sağlayıcısını tespit edip, sitenizden (HTML şablonlarından veya tema dosyalarından) tamamen kaldırmaktır.
Web sitenizdeki adres çubuğunda parlayan o güvenli bağlantı ikonu, ziyaretçilerinize verdiğiniz “Burada verileriniz güvende, bize güvenebilirsiniz” sözünün dijital dünyadaki karşılığıdır.
Mixed Content (Karışık İçerik) hatası; SSL sertifikanızı aldıktan sonra yapmanız gereken temizlik işlerini tam olarak tamamlamadığınızın bir göstergesidir. Sorunun kaynağını Geliştirici Araçları (F12) ile tespit edip, veritabanınızdaki eski ve güvensiz (HTTP) URL yollarını Better Search Replace gibi araçlarla HTTPS formatına dönüştürdüğünüzde veya sunucu tarafında CSP (İçerik Güvenliği Politikası) kurallarını aktif ettiğinizde, bu sorunu kalıcı olarak tarihe gömersiniz. Dijital mülkünüzün her bir baytını şifreli ve güvenli hale getirmek, hem arama motorlarının sitenizi ödüllendirmesini sağlayacak hem de marka prestijinizi sarsılmaz bir konuma taşıyacaktır.