Düzenli Aynı Site

"Aynı site" tanımı, URL şemasını içerecek şekilde değişiyor. Bu nedenle, bir sitenin HTTP ve HTTPS sürümleri arasındaki bağlantılar artık siteler arası istek olarak sayılıyor. Mümkün olduğunda sorunları önlemek için varsayılan olarak HTTPS'ye geçin veya hangi SameSite özellik değerlerinin gerekli olduğuna dair ayrıntılar için okumaya devam edin.

Şema içeren aynı site, (web) sitenin tanımını yalnızca kaydedilebilir alan adından şema + kaydedilebilir alan adı olarak değiştirir. Daha fazla ayrıntı ve örnek için "Aynı site" ve "aynı kaynak" kavramlarını anlama başlıklı makaleyi inceleyin.

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

Web sitenizi henüz tamamen yeni sürüme geçirmediyseniz bu işleme öncelik vermelisiniz. Ancak site ziyaretçilerinizin HTTP ile HTTPS arasında geçiş yaptığı durumlar varsa bu yaygın senaryolardan bazıları ve ilişkili SameSite çerez davranışı bu makalenin ilerleyen bölümlerinde açıklanmıştır.

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

  • Chrome 86'dan itibaren about://flags/#schemeful-same-site seçeneğini etkinleştirin. Chrome Durumu sayfasından ilerlemeyi takip edin.
  • Firefox 79'dan itibaren network.cookie.sameSite.schemeful değerini true olarak ayarlamak için about:config'yi kullanın. Bugzilla sorununu kullanarak ilerlemeyi takip edin.

Çerezler için varsayılan olarak SameSite=Lax değerine geçişin başlıca nedenlerinden biri, Siteler Arası İstek Sahteciliği (CSRF)'ne karşı koruma sağlamaktı. Ancak güvenli olmayan HTTP trafiği, ağ saldırganlarının sitenin güvenli HTTPS sürümünde kullanılacak çerezleri değiştirmesine olanak tanır. Şemalar arasında bu ek siteler arası sınırı oluşturmak, bu saldırılara karşı daha fazla savunma sağlar.

Sık karşılaşılan şemalar arası senaryolar

Bir web sitesinin şemalar arası sürümleri arasında gezinmek (ör. http://site.example adresinden https://site.example adresine bağlantı oluşturmak) daha önce SameSite=Strict çerezlerinin gönderilmesine izin veriyordu. Bu işlem artık siteler arası gezinme olarak değerlendirilir. Bu da SameSite=Strict çerezlerinin engelleneceği anlamına gelir.

Bir sitenin güvenli olmayan HTTP sürümündeki bağlantının güvenli HTTPS sürümüne tıklanmasıyla 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ükleme

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

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

Önceden, bir sayfaya şemalar arası alt kaynak yüklemek SameSite=Strict veya SameSite=Lax çerezlerinin gönderilmesine ya da ayarlanmasına izin veriyordu. Artık bu, diğer tüm üçüncü taraf veya siteler arası alt kaynaklarla aynı şekilde ele alınıyor. Bu da SameSite=Strict veya SameSite=Lax çerezlerinin engelleneceği anlamına geliyor.

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 isteklerde tüm çerezler engellenir.

Sitenin güvenli HTTPS sürümünden gelen bir kaynağın güvenli olmayan HTTP sürümüne dahil edilmesiyle ortaya çıkan şemalar arası alt kaynak. SameSite=Strict ve SameSite=Lax çerezleri engellenir, SameSite=None; Secure çerezlerine izin verilir.
HTTPS üzerinden şemalar arası alt kaynak içeren bir 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 işlemi, daha önce SameSite=Lax veya SameSite=Strict ile ayarlanan çerezlerin gönderilmesine izin veriyordu. Bu işlem artık siteler arası bir POST olarak değerlendirilir ve yalnızca SameSite=None çerezleri gönderilebilir. Bu senaryoya, 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 geçiren sitelerde rastlayabilirsiniz.

Alt kaynaklarda olduğu gibi, istek güvenli bir bağlamdan (ör. HTTPS) güvenli olmayan bir bağlama (ör. HTTP) gönderiliyorsa üçüncü taraf veya siteler arası çerezler Secure gerektirdiğinden bu isteklerde tüm çerezler engellenir.

Sitenin güvenli olmayan HTTP sürümündeki bir formdan güvenli HTTPS sürümüne gönderilen form sonucu oluşan ş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 DevTools'daki Sorun sekmesi, Schemeful Same-Site sorunlarını içerecek. Siteniz için aşağıdaki sorunların vurgulandığını görebilirsiniz.

Gezinme sorunları:

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

Alt öğe yükleme sorunları:

  • "Çerezlerin aynı sitedeki alt kaynaklara gönderilmeye devam etmesi için tamamen HTTPS'ye geçin" veya "Çerezlerin aynı sitedeki 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ıları.
  • "Çerezlerin aynı sitedeki alt kaynaklara gönderilmesi için tamamen HTTPS'ye geçin" veya "Çerezlerin aynı sitedeki alt kaynaklar tarafından ayarlanmasına izin vermek için tamamen HTTPS'ye geçin": Çerezin engellendiğine dair uyarılar. İkinci uyarı, bir form POST edilirken de gösterilebilir.

Daha fazla bilgi için Schemeful Same-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 Schemeful Same-Site sorunlarıyla ilgili mesaj gösterilir. Sitenizde şunları görebilirsiniz:

  • "cookie_name çerezi, şema eşleşmediği için yakında http://site.example/ sitesi için siteler arası çerez olarak değerlendirilecek."
  • "cookie_name çerezi, şema eşleşmediğinden http://site.example/ ile siteler arası olarak değerlendirildi."

SSS

Sitem zaten tamamen HTTPS'de kullanılabilir durumda. Tarayıcımın DevTools'unda neden sorun görüyorum?

Bağlantılarınızın ve alt kaynaklarınızın bazıları hâlâ güvenli olmayan URL'lere işaret ediyor olabilir.

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

HTTPS'ye geçemezsem ne olur?

Kullanıcılarınızı korumak için sitenizi tamamen HTTPS'ye geçirmenizi önemle tavsiye ederiz. Bunu kendiniz yapamıyorsanız bu seçeneği sunup sunamayacaklarını öğrenmek için barındırma sağlayıcınızla görüşmenizi öneririz. Kendi kendinize barındırma yapıyorsanız Let's Encrypt, sertifika yüklemek ve yapılandırmak için çeşitli araçlar sağlar. Ayrıca, sitenizi HTTPS bağlantısı sağlayabilecek bir CDN'nin veya başka bir proxy'nin arkasına taşımayı da deneyebilirsiniz.

Bu işlemler sorunu çözmediyse etkilenen çerezlerdeki SameSite korumasını gevşetmeyi deneyin.

  • Yalnızca SameSite=Strict çerezlerinin engellendiği durumlarda korumayı 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 olarak 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 özelliğinin çerezlerde Secure özelliğini gerektirmesidir. Bu da söz konusu çerezlerin güvenli olmayan bir bağlantı üzerinden gönderilemeyeceği veya ayarlanamayacağını gösterir. Bu durumda, siteniz HTTPS'ye yükseltilmediği sürece söz konusu çereğe erişemezsiniz.
    • Üçüncü taraf çerezleri tamamen kullanımdan kaldırılacağından bunun yalnızca geçici bir çözüm olduğunu unutmayın.

SameSite özelliğini belirtmediysem bu değişiklik çerezlerimi nasıl etkiler?

SameSite özelliği olmayan çerezler, SameSite=Lax belirtilmiş gibi değerlendirilir ve bu çerezler için de aynı şema dışı davranış geçerli olur. Güvenli olmayan yöntemler için geçici istisnanın geçerliliğini koruduğunu unutmayın. Daha fazla bilgi için Chromium SameSiteSSS'deki Lax + POST azaltma bölümüne bakın.

WebSocket'ler nasıl etkilenir?

WebSocket bağlantıları, sayfayla aynı güvenlik düzeyine sahipse aynı site olarak kabul edilir.

Aynı site:

  • https:// adlı kullanıcıdan wss:// bağlantısı
  • http:// adlı kullanıcıdan ws:// bağlantısı

Siteler arası:

  • http:// adlı kullanıcıdan wss:// bağlantısı
  • https:// adlı kullanıcıdan ws:// bağlantısı

Fotoğraf: Unsplash'taki Julissa Capdevilla