Web sitenizde HTTPS'yi desteklemek, sitenizi ve kullanıcılarınızı saldırılara karşı korumak için önemli bir adımdır ancak karma içerik bu korumayı etkisiz hale getirebilir. Karma içerik nedir? başlıklı makalede açıklandığı gibi, giderek daha güvenli olmayan karma içerikler tarayıcılar tarafından engellenecektir.
Bu kılavuzda, mevcut karma içerikle ilgili sorunları düzeltmeye ve yeni sorunların ortaya çıkmasını önlemeye yönelik teknikleri ve araçları göstereceğiz.
Sitenizi ziyaret ederek karma içerikleri bulma
Google Chrome'da bir HTTPS sayfasını ziyaret ettiğinizde tarayıcı, JavaScript konsolunda hatalar ve uyarılar olarak karma içerik konusunda sizi uyarır.
Karma içerik nedir? başlıklı makalede çeşitli örnekler bulabilir ve sorunların Chrome Geliştirici Araçları'nda nasıl raporlandığını görebilirsiniz.
Pasif karma içerik örneğinde aşağıdaki uyarılar gösterilir.
Tarayıcı, içeriği https
URL'sinde bulabiliyorsa içeriği otomatik olarak yükseltir ve ardından bir mesaj gösterir.
Etkin karma içerik engellenir ve bir uyarı gösterilir.
Sitenizdeki http://
URL'leri için bu tür uyarılar görürseniz bunları sitenizin kaynağında düzeltmeniz gerekir.
Bu URL'leri düzelttiğinizde kullanabilmeniz için, URL'leri bulduğunuz sayfayla birlikte bunların bir listesini yapmanız faydalı olacaktır.
Sitenizde karma içerik bulma
Karışık içerikleri doğrudan kaynak kodunuzda arayabilirsiniz.
Kaynak kodunuzda http://
etiketini ve HTTP URL özelliklerini içeren etiketleri arayın.
Sabitleme etiketlerinin (<a>
) href
özelliğinde http://
bulunmasının genellikle karma içerik sorunu olmadığını unutmayın. Bununla birlikte, daha sonra açıklanacak bazı önemli istisnalar vardır.
Siteniz bir içerik yönetim sistemi kullanılarak yayınlanıyorsa sayfalar yayınlanırken güvenli olmayan URL'lere bağlantılar eklenebilir. Örneğin, resimler göreli yol yerine tam URL ile eklenebilir. Bu sorunları İçerik Yönetim Sistemi içeriğinde bulup düzeltmeniz gerekir.
Karma içeriği düzeltme
Sitenizin kaynağında karma içerik bulduğunuzda bu adımları uygulayarak sorunu düzeltebilirsiniz.
Bir kaynak isteğinin otomatik olarak HTTP'den HTTPS'ye yükseltildiğine dair bir konsol mesajı alırsanız kodunuzdaki kaynağın http://
URL'sini https://
olarak güvenle değiştirebilirsiniz.
Ayrıca, tarayıcı URL çubuğunda http://
değerini https://
olarak değiştirip URL'yi bir tarayıcı sekmesinde açmayı deneyerek bir kaynağın güvenli bir şekilde kullanılabilir olup olmadığını kontrol edebilirsiniz.
Kaynak https://
üzerinden kullanılamıyorsa aşağıdaki seçeneklerden birini tercih etmeniz önerilir:
- Farklı bir ana makineden kaynak varsa kaynağı dahil edin.
- Yasal olarak izin veriliyorsa içeriği doğrudan indirip sitenizde barındırın.
- Kaynağı sitenizden tamamen hariç tutun.
Sorunu düzelttikten sonra hatayı ilk kez bulduğunuz sayfayı görüntüleyin ve hatanın artık görünmediğini doğrulayın.
Standart dışı etiket kullanımına dikkat edin
Sitenizde standart olmayan etiket kullanımından kaçının.
Örneğin, ana sayfa (<a>
) etiketi URL'leri, tarayıcının yeni bir sayfaya gitmesine neden olduğundan karışık içerik hatalarına neden olmaz.
Bu sayede genellikle düzeltilmesi gerekmez.
Ancak bazı resim galerisi komut dosyaları, <a>
etiketinin işlevini geçersiz kılar ve href
özelliği tarafından belirtilen HTTP kaynağını sayfadaki bir ışık kutusu ekranına yükler. Bu da karma içerik sorununa neden olur.
Karma içeriği geniş ölçekte yönetme
Yukarıdaki manuel adımlar küçük web siteleri için iyi sonuç verir ancak büyük web siteleri veya birçok ayrı geliştirme ekibine sahip siteler için yüklenen tüm içeriği takip etmek zor olabilir. Bu görevi kolaylaştırmak için içerik güvenliği politikasını kullanarak tarayıcıya karma içerik hakkında sizi bilgilendirmesini talimat verebilir ve sayfalarınızın hiçbir zaman beklenmedik bir şekilde güvenli olmayan kaynaklar yüklemediğinden emin olabilirsiniz.
İçerik güvenliği politikası
İçerik güvenliği politikası (CSP), karma içerikleri geniş ölçekte yönetmek için kullanabileceğiniz çok amaçlı bir tarayıcı özelliğidir. CSP raporlama mekanizması, sitenizdeki karma içerikleri izlemek ve karma içerikleri yükselterek veya engelleyerek kullanıcıları korumak için yaptırım politikaları sağlamak amacıyla kullanılabilir.
Sunucunuzdan gönderilen yanıta Content-Security-Policy
veya Content-Security-Policy-Report-Only
üstbilgisini ekleyerek bu özellikleri bir sayfa için etkinleştirebilirsiniz.
Ayrıca, sayfanızı <head>
bölümünde bir <meta>
etiketi kullanarak Content-Security-Policy
ayarlayabilirsiniz (Content-Security-Policy-Report-Only
ayarlanamaz).
İçerik güvenliği politikasıyla karma içerik bulma
Sitenizdeki karma içerik raporlarını toplamak için içerik güvenliği politikasını kullanabilirsiniz.
Bu özelliği etkinleştirmek için Content-Security-Policy-Report-Only
yönergesini sitenizin yanıt üst bilgisi olarak ekleyerek ayarlayın.
Yanıt başlığı:
Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint
Bir kullanıcı sitenizdeki bir sayfayı ziyaret ettiğinde tarayıcısı, içerik güvenliği politikasını ihlal eden her şeyle ilgili JSON biçiminde raporlar https://example.com/reportingEndpoint
adresine gönderir.
Bu durumda, bir alt kaynak HTTP üzerinden her yüklendiğinde bir rapor gönderilir.
Bu raporlar, politika ihlalinin gerçekleştiği sayfa URL'sini ve politikayı ihlal eden alt kaynak URL'sini içerir.
Raporlama uç noktanızı bu raporları günlüğe kaydedecek şekilde yapılandırırsanız her sayfayı kendiniz ziyaret etmeden sitenizdeki karma içeriği izleyebilirsiniz.
Bu konuda dikkat edilecek iki nokta vardır:
- Kullanıcıların sayfanızı CSP üstbilgisini anlayan bir tarayıcıda ziyaret etmesi gerekir. Bu, modern tarayıcıların çoğu için geçerlidir.
- Yalnızca kullanıcılarınızın ziyaret ettiği sayfalarla ilgili raporlar alırsınız. Bu nedenle, çok fazla trafik almayan sayfalarınız varsa sitenizin tamamıyla ilgili raporları almanız biraz zaman alabilir.
İçerik güvenliği politikası kılavuzunda daha fazla bilgi ve örnek uç nokta yer alır.
CSP ile raporlamaya alternatifler
Siteniz Blogger gibi bir platform tarafından barındırılıyorsa üstbilgileri değiştirmeye ve İGP eklemeye erişiminiz olmayabilir. Bunun yerine, sitenizdeki sorunları sizin için bulmak üzere bir web sitesi tarayıcı (ör. HTTPSChecker veya Karma İçerik Taraması) kullanmak da uygun bir alternatif olabilir.
Güvenli olmayan istekleri yeni sürüme geçirme
Tarayıcılar, güvenli olmayan istekleri yükseltmeye ve engellemeye başlıyor. Bu öğelerin otomatik olarak yeni sürüme geçirilmesini veya engellenmesini zorunlu kılmak için İGP yönergelerini kullanabilirsiniz.
upgrade-insecure-requests
CSP yönergesi, tarayıcıya ağ istekleri göndermeden önce güvenli olmayan URL'leri yükseltmesini söyler.
Örneğin, bir sayfa <img src="http://example.com/image.jpg">
gibi bir HTTP URL'sine sahip bir resim etiketi içeriyorsa
Bunun yerine tarayıcı, https://example.com/image.jpg
için güvenli bir istek gönderir ve böylece kullanıcıyı karma içerikten kurtarır.
Bu davranışı, aşağıdaki talimatı içeren bir Content-Security-Policy
başlığı göndererek etkinleştirebilirsiniz:
Content-Security-Policy: upgrade-insecure-requests
Alternatif olarak, aynı yönergeyi <meta>
öğesi kullanarak dokümanın <head>
bölümüne satır içi olarak yerleştirebilirsiniz:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Tarayıcıda otomatik yükseltme işleminde olduğu gibi, kaynak HTTPS üzerinden kullanılamıyorsa yükseltilen istek başarısız olur ve kaynak yüklenmez.
Bu sayede sayfanızı güvende tutabilirsiniz. upgrade-insecure-requests
yönergesi, tarayıcının şu anda desteklemediği istekleri yükseltmeye çalışarak otomatik tarayıcı yükseltme özelliğinin ötesine geçer.
upgrade-insecure-requests
yönergesi, sayfanın tamamının korunmasını sağlamak için <iframe>
belgelerine dağıtılır.