Düzenli Aynı Site

"Aynı site" tanımı, URL şemasını içerecek şekilde gelişiyor. Bu nedenle, bir sitenin HTTP ve HTTPS sürümleri arasındaki bağlantılar artık siteler arası istek olarak kabul ediliyor. Mümkün olduğunda sorunları önlemek için varsayılan olarak HTTPS'ye yükseltin veya hangi SameSite özelliği değerlerinin gerekli olduğuyla ilgili ayrıntıları öğrenmek için okumaya devam edin.

Steven Bingler
Steven Bingler

Şemalı Aynı Site bir (web)sitesinin tanımını yalnızca kaydedilebilir alan adından şema + kaydedilebilir alan adına değiştirir. Daha fazla ayrıntı ve örneği "Aynı site" ve "aynı kaynak" kavramlarını anlama başlıklı makalede bulabilirsiniz.

İyi haber: Web siteniz zaten tamamen HTTPS'ye yükseltilmişse endişelenmenize gerek yoktur. Sizin için hiçbir şey değişmeyecek.

Web sitenizi henüz tam olarak yükseltmediyseniz bu işleme öncelik vermelisiniz. Ancak site ziyaretçilerinizin HTTP ile HTTPS arasında geçiş yaptığı durumlar varsa bu yaygın senaryoların bazıları ve bunlarla ilişkili SameSite çerez davranışları bu makalenin ilerleyen bölümlerinde açıklanmaktadır.

Bu değişiklikleri hem Chrome hem de Firefox'ta test etmek için etkinleştirebilirsiniz.

  • Chrome 86'dan itibaren about://flags/#schemeful-same-site seçeneğini etkinleştirin. Chrome Status sayfasından ilerleme durumunu takip edin.
  • Firefox 79'dan itibaren network.cookie.sameSite.schemeful değerini about:config üzerinden true olarak ayarlayın. Bugzilla sorununu kullanarak ilerleme durumunu izleyin.

Çerezler için varsayılan olarak SameSite=Lax değerinin kullanılmasının başlıca nedenlerinden biri, Siteler Arası İstek Sahteciliği (CSRF) saldırılarına karşı koruma sağlamaktır. Ancak güvenli olmayan HTTP trafiği, ağ saldırganlarına, sitenin güvenli HTTPS sürümünde kullanılacak çerezleri kurcalama fırsatı sunmaya devam ediyor. Şemalar arasında bu ek siteler arası sınırın oluşturulması, bu saldırılara karşı daha fazla savunma sağlar.

Şemalar arası sık karşılaşılan senaryolar

Bir web sitesinin şemalar arası sürümleri arasında gezinmek (örneğin, http://site.example adresinden https://site.example adresine bağlantı oluşturmak) daha önce SameSite=Strict çerezlerinin gönderilmesine izin veriyordu. Bu artık siteler arası gezinme olarak değerlendiriliyor. Bu nedenle SameSite=Strict çerezleri engellenecek.

Bir sitenin güvenli olmayan HTTP sürümündeki bir bağlantının güvenli HTTPS sürümüne yönlendirilmesiyle tetiklenen şemalar arası gezinme. SameSite=Strict çerezleri engellenir, SameSite=Lax ve SameSite=None; Secure çerezlerine izin verilir.
HTTP'den HTTPS'ye şemalar arası gezinme.
HTTP → HTTPS HTTPS → HTTP
SameSite=Strict ⛔ Engellendi ⛔ Engellendi
SameSite=Lax ✓ İzin veriliyor ✓ İzin veriliyor
SameSite=None;Secure ✓ İzin veriliyor ⛔ Engellendi

Alt kaynaklar yükleniyor

Burada yaptığınız değişiklikler, tam HTTPS'ye yükseltme üzerinde çalışırken yalnızca geçici bir çözüm olarak değerlendirilmelidir.

Alt kaynaklara örnek olarak resimler, iFrame'ler ve XHR veya Fetch ile yapılan ağ istekleri verilebilir.

Bir sayfada şemalar arası bir alt kaynağın yüklenmesi, daha önce SameSite=Strict veya SameSite=Lax çerezlerinin gönderilmesine ya da ayarlanmasına izin veriyordu. Bu durum artık diğer tüm üçüncü taraf veya siteler arası alt kaynaklarla aynı şekilde ele alınır. Bu da tüm SameSite=Strict veya SameSite=Lax çerezlerinin engelleneceği anlamına gelir.

Ayrıca, tarayıcı güvenli olmayan şemalardaki kaynakların güvenli bir sayfaya yüklenmesine izin verse bile, üçüncü taraf veya siteler arası çerezler Secure gerektirdiğinden bu isteklerdeki tüm çerezler engellenir.

Sitenin güvenli HTTPS sürümündeki bir kaynağın güvenli olmayan HTTP sürümüne dahil edilmesi sonucunda oluşan şemalar arası bir alt kaynak. SameSite=Strict ve SameSite=Lax çerezleri engellenir, SameSite=None; Secure çerezlerine izin verilir.
HTTPS üzerinden şemalar arası bir alt kaynak içeren HTTP sayfası.
HTTP → HTTPS HTTPS → HTTP
SameSite=Strict ⛔ Engellendi ⛔ Engellendi
SameSite=Lax ⛔ Engellendi ⛔ Engellendi
SameSite=None;Secure ✓ İzin veriliyor ⛔ Engellendi

Form gönderme

Bir web sitesinin şemalar arası sürümleri arasında yayınlama yapıldığında, daha önce SameSite=Lax veya SameSite=Strict ile ayarlanan çerezlerin gönderilmesine izin veriliyordu. Bu istek artık siteler arası POST isteği olarak değerlendirilir ve yalnızca SameSite=None çerezleri gönderilebilir. Bu senaryoyla, varsayılan olarak güvenli olmayan sürümü sunan ancak oturum açma veya ödeme formu gönderildiğinde kullanıcıları güvenli sürüme yükselten sitelerde karşılaşabilirsiniz.

Alt kaynaklarda olduğu gibi, istek güvenli bir bağlamdan (ör. HTTPS) güvenli olmayan bir bağlama (ör. HTTP) geliyorsa bu isteklerdeki tüm çerezler engellenir. Üçüncü taraf veya siteler arası çerezler için Secure gerekir.

Güvenli olmayan HTTP sürümündeki bir sitenin güvenli HTTPS sürümüne gönderilmesiyle sonuçlanan, şemalar arası form gönderimi. SameSite=Strict ve SameSite=Lax çerezleri engellenir, SameSite=None; Secure çerezlerine izin verilir.
HTTP'den HTTPS'ye şemalar arası form gönderimi.
HTTP → HTTPS HTTPS → HTTP
SameSite=Strict ⛔ Engellendi ⛔ Engellendi
SameSite=Lax ⛔ Engellendi ⛔ Engellendi
SameSite=None;Secure ✓ İzin veriliyor ⛔ Engellendi

Sitemi nasıl test edebilirim?

Geliştirici araçları ve mesajlaşma Chrome ve Firefox'ta kullanılabilir.

Chrome 86'dan itibaren Geliştirici Araçları'ndaki Sorunlar sekmesinde Schemeful Same-Site sorunları yer alacak. Siteniz için aşağıdaki sorunlar vurgulanabilir.

Gezinmeyle ilgili sorunlar:

  • "Aynı site isteklerinde çerezlerin gönderilmeye devam etmesi için tamamen HTTPS'ye geçin": Çerezin Chrome'un gelecekteki bir sürümünde engelleneceğine dair uyarı.
  • "Çerezlerin aynı site isteklerinde gönderilmesi için tamamen HTTPS'ye geçin": Çerezin engellendiğine dair bir uyarı.

Alt kaynak yükleme sorunları:

  • "Çerezlerin aynı site alt kaynaklarına gönderilmeye devam etmesi için tamamen HTTPS'ye geçin" veya "Çerezlerin aynı site alt kaynakları tarafından ayarlanmaya devam etmesi için tamamen HTTPS'ye geçin": Çerezin, Chrome'un gelecekteki bir sürümünde engelleneceği uyarısı.
  • "Çerezlerin aynı site alt kaynaklarına gönderilmesi için tamamen HTTPS'ye geçin" veya "Çerezlerin aynı site alt kaynakları tarafından ayarlanmasına izin vermek için tamamen HTTPS'ye geçin": Çerezin engellendiğine dair uyarılar. İkincisi olan uyarı, bir form POST edilirken de görünebilir.

Daha fazla bilgi için Şemalı Aynı Site için Test ve Hata Ayıklama İpuçları başlıklı makaleyi inceleyin.

Firefox 79'dan itibaren, network.cookie.sameSite.schemeful about:config aracılığıyla true olarak ayarlandığında konsolda Şemalı Aynı Site sorunlarıyla ilgili mesaj gösterilir. Sitenizde aşağıdakileri görebilirsiniz:

  • "Şema eşleşmediği için cookie_name çerezi http://site.example/'ye karşı yakında siteler arası çerez olarak değerlendirilecek."
  • "Cookie cookie_name has been treated as cross-site against http://site.example/ because the scheme does not match." ("Cookie , şema eşleşmediği için ile siteler arası olarak değerlendirildi.")

SSS

Sitem zaten HTTPS üzerinden tamamen kullanılabilir durumda. Tarayıcımın geliştirici araçlarında neden sorun görüyorum?

Bağlantılarınızın ve alt kaynaklarınızın bir kısmı hâlâ güvenli olmayan URL'lere yönlendiriyor olabilir.

Bu sorunu düzeltmenin bir yolu, HTTP Strict-Transport-Security (HSTS) ve includeSubDomain yönergesini kullanmaktır. HSTS + includeSubDomain ile sayfalarınızdan birinde yanlışlıkla güvenli olmayan bir bağlantı yer alsa bile tarayıcı otomatik olarak güvenli sürümü kullanır.

HTTPS'ye yükseltme yapamıyorsam ne olur?

Kullanıcılarınızı korumak için sitenizi tamamen HTTPS'ye yükseltmenizi önemle tavsiye etsek de bunu kendiniz yapamıyorsanız barındırma sağlayıcınızla görüşerek bu seçeneği sunup sunmadıklarını öğrenmenizi öneririz. Kendi barındırmanızı kullanıyorsanız Let's Encrypt, sertifika yükleyip yapılandırmak için çeşitli araçlar sunar. Ayrıca, sitenizi HTTPS bağlantısı sağlayabilen bir CDN'nin veya başka bir proxy'nin arkasına taşımayı da düşünebilirsiniz.

Bu yine de mümkün değilse SameSite etkilenen çerezlerde korumayı gevşetmeyi deneyin.

  • Yalnızca SameSite=Strict çerezlerinin engellendiği durumlarda koruma düzeyini Lax olarak düşürebilirsiniz.
  • Hem Strict hem de Lax çerezlerinin engellendiği ve çerezlerinizin güvenli bir URL'ye gönderildiği (veya güvenli bir URL'den ayarlandığı) durumlarda korumaları None düzeyine düşürebilirsiniz.
    • Çerez gönderdiğiniz (veya çerezleri ayarladığınız) URL güvenli değilse bu geçici çözüm başarısız olur. Bunun nedeni, SameSite=None'nın çerezlerde Secure özelliğini gerektirmesidir. Bu da söz konusu çerezlerin güvenli olmayan bir bağlantı üzerinden gönderilemeyeceği veya ayarlanamayacağı anlamına gelir. Bu durumda, siteniz HTTPS'ye yükseltilene kadar söz konusu çerezlere erişemezsiniz.
    • Üçüncü taraf çerezleri tamamen kullanımdan kaldırılacağından bu çözümün yalnızca geçici olduğunu unutmayın.

SameSite özelliği belirtmediysem bu durum çerezlerimi nasıl etkiler?

SameSite özelliği olmayan çerezler, SameSite=Lax belirtilmiş gibi değerlendirilir ve bu çerezler için de aynı şemalar arası davranış geçerlidir. Güvenli olmayan yöntemlerle ilgili geçici istisnanın geçerliliğini koruduğunu unutmayın. Daha fazla bilgi için Chromium SameSite SSS bölümündeki Lax + POST azaltma başlıklı makaleyi inceleyin.

WebSocket'ler nasıl etkilenir?

WebSocket bağlantıları, sayfa ile aynı güvenlik düzeyine sahipse aynı site olarak kabul edilmeye devam eder.

Same-site:

  • https:// adlı konsoldan wss:// bağlantısı
  • http:// adlı konsoldan ws:// bağlantısı

Siteler arası:

  • http:// adlı konsoldan wss:// bağlantısı
  • https:// adlı konsoldan ws:// bağlantısı