Karışık İçerik Denetleyicisi

Taranacak HTML

HTTPS sayfası içinde yüklenen http:// kaynaklarını algılar.

Sonraki

Bir site HTTPS’e taşındıktan sonra hâlâ http://... adresine işaret eden başıboş <img>, <script>, <link> veya <iframe> etiketleri yeşil kilidi bozar ve modern tarayıcılarda çoğu zaman hiç yüklenmez. Bir URL girin; bu denetleyici sayfayı yükler, her alt kaynağı (görseller, stil sayfaları, betikler, yazı tipleri, iframe’ler, video, ses) inceler ve düz HTTP üzerinden sunulan her şeyi listeler; böylece kullanıcılar “tam olarak güvenli değil” uyarısıyla karşılaşmadan önce bunları düzeltebilirsiniz.

Tarama nasıl çalışır?

  1. 1

    Bir URL girin

    HTTPS URL'si. Tarayıcı tek bir yönlendirme adımını izler.

  2. 2

    Sayfa getirilir

    HTML, her alt kaynak referansı için ayrıştırılır.

  3. 3

    Her referans sınıflandırılır

    HTTPS, HTTP veya protokole göreli (`//cdn...`).

  4. 4

    Türe göre gruplanmış rapor

    Aktif ve pasif içerik, önem sıralamasıyla birlikte.

Aktif ve pasif karışık içerik

Tarayıcılar iki sınıfı farklı şekilde ele alır:

  • Aktif karışık içerik (betikler, iframe’ler, stil sayfaları, XHR/fetch, worker’lar, WebSocket). Modern tarayıcılar tarafından tamamen engellenir. Şunları içerir: <script>, <link rel="stylesheet">, <iframe>, fetch(), XMLHttpRequest, importScripts().
  • Pasif karışık içerik (görseller, video, ses posterleri). Yüklenir ama işaretlenir, kilit kaybolur ve URL çubuğunda bir uyarı görünür. Şunları içerir: <img>, <audio>, <video>, formların action hedefleri.

Neden önemli?

  • Güven. Bozuk bir kilit, bunu fark eden kullanıcılara “bu site güvenli değil” mesajını verir.
  • İşlevsellik. Engellenen aktif içerik, betiklerin çalışmadığı ve stil sayfalarının uygulanmadığı anlamına gelir, sayfalar bozuk görünür.
  • SEO. Google, HTTPS sayfalarını tercih eder; bozuk HTTPS sinyalleri sıralamalara dolaylı olarak zarar verir.
  • Uyumluluk. PCI DSS ve diğer birçok uyumluluk çerçevesi, işlem sayfaları için karışık içerik olmadan HTTPS gerektirir.

Yaygın kaynaklar

Kaynak Tipik çözüm
HTTP üzerinden eski CDN Alan adını HTTPS CDN’ye taşıyın
YouTube / Vimeo’nun eski gömme kodu Gömmeyi güncel sürüme güncelleyin
Reklam ağı betik URL’leri HTTPS sürümünü kullanın (yıllardır mevcut)
Üçüncü taraf yazı tipleri ve haritalar http://fonts.googleapis.comhttps:// olarak değiştirin
Sosyal düğme widget’ları Güncel widget kodunu kullanın
Kullanıcıların oluşturduğu görsel URL’leri Kaydederken yeniden yazın; gösterirken proxy ile yükleyin
Blog gönderilerindeki sabit kodlu URL’ler Veritabanında toplu bul-değiştir

Düzeltme stratejileri

  1. Protokole göreli URL’ler (//cdn.example.com/a.js). Geçerli sayfanın protokolüyle yüklenir. Çoğu CDN için güvenlidir ama kullanımdan kaldırılmıştır, açık https://... tercih edin.
  2. Kaynakta yeniden yazın. Şablonlarınızı ve içeriğinizi https:// kullanacak şekilde güncelleyin. Kod tabanını bir düzenli ifadeyle tarayın: http://(?!localhost).
  3. Content Security Policy yükseltmesi. Content-Security-Policy: upgrade-insecure-requests, tarayıcıya HTTP kaynak URL’lerini sessizce HTTPS’e yeniden yazmasını söyler. Her URL’yi denetleyemeyen siteler için en iyisidir.
  4. <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> satır içi eşdeğeridir.
  5. Yalnızca HTTP olan kaynakları proxy’leyin, üst kaynağın gerçekten HTTPS uç noktası yoksa (bugün nadir) kendi HTTPS kaynağınız üzerinden geçirin.

Denetleyicinin bulduğu şeyler

  • <img>, <script>, <link>, <iframe>, <video>, <audio>, <source> içinde referans verilen tüm dış URL’ler.
  • Formların action öznitelikleri.
  • <style> bloklarındaki satır içi CSS url(...) referansları.
  • JavaScript ile enjekte edilen kaynakları taramaz, bunlar çalışma zamanında eklenir ve tarayıcı tarafında denetim gerektirir (Chrome DevTools’taki Sorunlar paneli bunları yakalar).

Sık Sorulan Sorular

Kısmen. upgrade-insecure-requests CSP başlığı veya meta etiketi, tarayıcılara HTTP alt kaynak URL’lerini otomatik olarak HTTPS’e yeniden yazmalarını söyler. Sunucu HTTPS’i desteklediğinde çalışır; üst kaynak yalnızca HTTP ise yeniden yazma başarısız olur.

Hayır. Yalnızca statik HTML’de referans verilen kaynaklar. Çalışma zamanında <img> öğeleri oluşturan betikler görünmez. Chrome DevTools’un Sorunlar paneli bunları tarayıcıda yakalar.

HTTPS sayfalarında karışık içeriğe karşı güvenlidirler (HTTPS’i devralırlar). Ancak yalnızca HTTP olan iç araçlarda veya arşivlenmiş sayfalarda bozulurlar ve kullanımdan kaldırılmışlardır. Açık https:// tercih edin.

Tarayıcı önbelleği. Düzeltmeyi doğrulamak için sabit yenileme yapın (Ctrl+Shift+R / Cmd+Shift+R) veya gizli pencerede test edin. CSP raporları ve konsol uyarıları geçerli durumu gösterir.

Sunucu tarafındaki bir getirici, sayfayı analiz için alır. URL’nin kendisi istek dışında saklanmaz.

İlgili Araçlar

Araç diğer dillerde mevcuttur