Web siteniz için HTTPS'yi desteklemek, sitenizi ve kullanıcılarınızı saldırılardan korumak için önemli bir adımdır ancak karma içerik bu korumayı işe yaramaz hale getirebilir. Karma içerik nedir? bölümünde açıklandığı gibi, giderek daha fazla güvenli olmayan karma içerik tarayıcılar tarafından engellenecektir.
Bu kılavuzda, mevcut karma içerik sorunlarını düzeltmek ve yenilerinin oluşmasını önlemek için 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 hata ve uyarı 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 bir https URL'sinde bulabilirse otomatik olarak yükseltir ve bir mesaj gösterir.
Etkin karma içerik engellenir ve bir uyarı gösterilir.
Sitenizdeki http:// URL için bu tür uyarılar görürseniz bunları sitenizin kaynağında düzeltmeniz gerekir.
Bu URL'lerin ve bulundukları sayfaların bir listesini oluşturmak, düzeltme aşamasında işinizi kolaylaştırır.
Sitenizdeki karma içeriği bulma
Karma içerikleri doğrudan kaynak kodunuzda arayabilirsiniz.
Kaynağınızda http:// araması yapın ve HTTP URL özelliklerini içeren etiketleri bulun.
Bağlantı etiketlerinin (<a>) href özelliğinde http:// bulunmasının genellikle karma içerik sorunu olmadığını unutmayın. Bu durumun bazı istisnaları aşağıda ele alınmıştı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 eklenmiş olabilir. Örneğin, resimler göreli yol yerine tam URL ile eklenebilir. Bunları İYS içeriğinde bulup düzeltmeniz gerekir.
Karma içeriği düzeltme
Sitenizin kaynağında karma içerik bulduktan sonra, bu sorunu düzeltmek için aşağıdaki adımları uygulayabilirsiniz.
Bir kaynak isteğinin otomatik olarak HTTP'den HTTPS'ye yükseltildiğini belirten bir konsol mesajı alırsanız kodunuzdaki kaynağın http:// URL'sini güvenle https:// olarak değiştirebilirsiniz.
Ayrıca, tarayıcı URL çubuğunda http:// protokolünü https:// olarak değiştirip URL'yi bir tarayıcı sekmesinde açmayı deneyerek 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 değerlendirebilirsiniz:
- Varsa farklı bir ana makineden kaynağı ekleyin.
- Yasal olarak izin veriliyorsa içeriği indirip doğrudan sitenizde barındırın.
- Kaynağı sitenizden tamamen kaldırın.
Sorunu düzelttikten sonra, hatayı ilk gördüğünüz sayfayı görüntüleyin ve hatanın artık görünmediğini doğrulayın.
Standart olmayan etiket kullanımına dikkat edin
Sitenizde standart takip kullanımına dikkat edin.
Örneğin, bağlantı (<a>) etiketi URL'leri, tarayıcının yeni bir sayfaya gitmesine neden olduğundan karma içerik hatalarına yol açmaz.
Bu nedenle, genellikle düzeltilmeleri 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 lightbox ekranına yükleyerek 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 çok sayıda ayrı geliştirme ekibi olan siteler için yüklenen tüm içeriği takip etmek zor olabilir. Bu görevde yardımcı olması için içerik güvenliği politikasını kullanarak tarayıcıya karma içerik hakkında sizi bilgilendirmesini ve sayfalarınızın hiçbir zaman beklenmedik şekilde güvenli olmayan kaynaklar yüklememesini sağlayabilirsiniz.
İçerik Güvenliği Politikası
İçerik Güvenliği Politikası (İGP), karma içeriği geniş ölçekte yönetmek için kullanabileceğiniz çok amaçlı bir tarayıcı özelliğidir. CSP raporlama mekanizması, sitenizdeki karma içeriği izlemek ve karma içeriği 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ın <head> bölümünde bir <meta> etiketi kullanarak Content-Security-Policy değerini ayarlayabilirsiniz (Content-Security-Policy-Report-Only değerini ayarlayamazsınız).
İçerik Güvenliği Politikası ile karma içerikleri 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 sitenize yanıt başlığı 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
Kullanıcılar sitenizdeki bir sayfayı her ziyaret ettiğinde tarayıcıları, içerik güvenliği politikasını ihlal eden her şeyle ilgili JSON biçimli 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 etmek zorunda kalmadan sitenizdeki karma içeriği izleyebilirsiniz.
Bu konuda dikkat edilecek iki nokta vardır:
- Kullanıcıların, sayfanızı CSP başlığını anlayan bir tarayıcıda ziyaret etmesi gerekir. Bu, çoğu modern tarayıcı 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ı için rapor almanız biraz zaman alabilir.
İçerik Güvenliği Politikası kılavuzunda daha fazla bilgi ve örnek bir uç nokta bulabilirsiniz.
CSP ile raporlamaya alternatifler
Siteniz Blogger gibi bir platform tarafından barındırılıyorsa üstbilgileri değiştirme ve CSP ekleme erişiminiz olmayabilir. Bunun yerine, sitenizdeki sorunları sizin için bulacak bir web sitesi tarayıcısı (ör. HTTPSChecker veya Mixed Content Scan) kullanmak uygun bir alternatif olabilir.
Güvenli olmayan istekleri yükseltme
Tarayıcılar, güvenli olmayan istekleri yükseltmeye ve engellemeye başlıyor. Bu öğelerin otomatik olarak yükseltilmesini veya engellenmesini zorunlu kılmak için CSP yönergelerini kullanabilirsiniz.
upgrade-insecure-requests İGP yönergesi, tarayıcıya ağ istekleri göndermeden önce güvenli olmayan URL'leri yükseltme talimatı verir.
Örneğin, bir sayfada HTTP URL'si içeren bir resim etiketi varsa (ör. <img src="https://example.com/image.jpg">)
Tarayıcı bunun yerine https://example.com/image.jpg için güvenli bir istekte bulunur ve böylece kullanıcıyı karma içerikten kurtarır.
Bu davranışı, aşağıdaki yönergeyi içeren bir Content-Security-Policy başlığı göndererek etkinleştirebilirsiniz:
Content-Security-Policy: upgrade-insecure-requests
Aynı yönergeyi, <meta> öğesini 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ı otomatik yükseltmesinde 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ın güvenliği korunur. upgrade-insecure-requests yönergesi, otomatik tarayıcı yükseltmenin ötesine geçerek tarayıcının şu anda yükseltmediği istekleri yükseltmeye çalışır.
upgrade-insecure-requests yönergesi <iframe> dokümanlarına uygulanarak tüm sayfanın korunmasını sağlar.