SameSite kurabiye tarifleri

Chrome, Firefox Edge, IETF'ye uygun olarak varsayılan davranışlarını değiştirmektedir teklif, Artan Daha İyi Çerezler bunun için:

  • SameSite özelliği olmayan çerezler SameSite=Lax olarak kabul edilir, Yani, varsayılan davranış, çerezleri birinci tarafla bağlamlar yalnızca
  • Siteler arası kullanıma yönelik çerezler, SameSite=None; Secure değerini belirtmek için zorunludur üçüncü taraf bağlamına dahil etmeyi etkinleştirmek.

Henüz yapmadıysanız engel olmaması için üçüncü taraf çerezlerini kullanabilir.

Tarayıcı Desteği

  • Chrome: 51..
  • Kenar: 16..
  • Firefox: 60..
  • Safari: 13..

Kaynak

Siteler arası veya üçüncü taraf çerezlerin kullanım alanları

Çerezlerin birlikte kullanılması gereken bazı yaygın kullanım alanları ve kalıpları bir üçüncü taraf bağlamında gönderilir. Bu kullanımlardan birini sağlıyorsanız veya ona güveniyorsanız durumlarda, sizin veya sağlayıcının çerezlerini ve hizmetin düzgün şekilde çalışmasını sağlar.

<iframe> içindeki içerik

<iframe> içinde görüntülenen farklı bir siteden içerik, üçüncü tarafa ait bağlam. Standart kullanım alanları şunlardır:

  • Video, harita, kod örnekleri gibi diğer sitelerden paylaşılan yerleştirilmiş içerik sosyal medya gönderilerinde bulabilirsiniz.
  • Ödemeler, takvimler, rezervasyon ve rezervasyon özelliklerinden bahsedeceğiz.
  • Sosyal düğmeler veya sahtekarlıkla mücadele hizmetleri gibi daha az belirgin hale getiren widget'lar <iframes>

Çerezler, diğer işlevlerinin yanı sıra, oturum durumunu korumak, ayarlarını etkinleştirebilir, istatistikleri etkinleştirebilir veya içeriği olan kullanıcılar için içeriği hesaplar.

Yerleştirilmiş içeriğin URL&#39;sinin, sayfanın URL&#39;si ile eşleşmediği tarayıcı penceresinin şeması.
Yerleştirilmiş içerik üst düzey web sitesinden gelmiyorsa üçüncü taraf içeriği oluyor.

Web, yapısı gereği composable olduğundan, <iframes> yönergesini yerleştirmek için de kullanılır birinci taraf bağlamında görüntülenen içerik Sitedeki tüm çerezler gösterilen reklamlar, üçüncü taraf çerezleri olarak kabul edilir. Eğer diğer sitelerin yerleştirmesini istediğiniz siteler oluşturmak ve bunları yapmak için çerezlere ihtiyaç duyarsanız bunların siteler arası kullanım için işaretlendiğinden veya onlar olmadan da rahatça geri dönebilir.

"Güvenli değil" sitelerdeki istekler

"Güvenli değil" kulağa endişe verici gelebilir, ancak yine de endişeye mahal vermemek için amaçlanır. Web'de bu birincil olarak POST istekleridir. Kurabiye SameSite=Lax olarak işaretlenenler güvenli üst düzey gezinmelerde gönderilir (örneğin, bir bağlantısını tıklayabilirsiniz. Ancak, web sitenize <form> gönderimi POST kullanan farklı bir site çerez içermez.

Bir sayfadan diğerine geçen isteğin şeması.
Gelen istekte "güvenli" kullanılıyorsa yöntemini kullanarak sayfa çerezleri gönderir.

Bu kalıp, kullanıcıyı uzaktan kumandaya yönlendirebilen siteler için kullanılır hizmetten vazgeçmeden önce bir işlem gerçekleştirmek için (örneğin, üçüncü taraf kimlik sağlayıcı Kullanıcı siteden ayrılmadan önce bir çerez, ve tek kullanımlık bir jeton olmak üzere bu jetonun geri gelen istek üzerine kontrol edildi. Siteler Arası İstek Sahtekarlığı (CSRF) anlamına gelir. Bu geri gelen istek POST üzerinden gelirse, SameSite=None; Secure olarak çerezleri kabul edersiniz.

Uzak kaynaklar

Bir sayfadaki uzak kaynaklar (ör. <img> veya <script> etiketlerinden) bir istekle birlikte gönderilen çerezlere dayalı olabilir. Yaygın kullanım alanları arasında şunlar yer alır: izleme pikselleri ve içeriği kişiselleştirme.

Bu, fetch veya XMLHttpRequest. fetch() credentials: 'include' seçenek, bu isteklerin çerez içerme olasılığı yüksektir. XMLHttpRequest için beklenen çerezler genellikle bir withCredentials değer true için. Bu çerezlerin siteler arası istekler.

Web Görünümü içindeki içerik

Platforma özel uygulamalardaki WebView, tarayıcı tarafından desteklenir. Geliştiricilerin yapması gerekenler uygulamalarını etkileyen kısıtlamaların veya sorunların, mobil platformdaki Web Görünümleri'ni kullanır.

Android ayrıca platforma özgü uygulamalarının doğrudan CookieManager API. Üstbilgiler veya JavaScript kullanılarak ayarlanan çerezlerde olduğu gibi, Siteler arası kullanıma yönelikse SameSite=None; Secure.

SameSite uygulamasını bugün nasıl uygulayabilirsiniz?

Yalnızca birinci taraf bağlamında gerekli olan çerezleri SameSite=Lax olarak işaretleyin veya ihtiyaçlarınıza göre SameSite=Strict. Bu çerezleri işaretlemezseniz yerine, bunları işlemek için varsayılan tarayıcı davranışına dayanarak arasında tutarsızlık olup olmadığını gösterir ve çerez.

Set-Cookie: first_party_var=value; SameSite=Lax

Üçüncü taraf bağlamında gerekli olan tüm çerezleri SameSite=None; Secure Her iki özellik de gereklidir. Yalnızca None Secure olmadan çerez reddedilecek. Farklılıkları hesaba katmak için tarayıcı uygulamalarında, bu gibi sorunların giderilmesine yönelik Uyumsuz müşterileri ele alma bölümünde açıklanan stratejilerden yararlanabilirsiniz.

Set-Cookie: third_party_var=value; SameSite=None; Secure

Uyumsuz istemcileri işleme

None ve varsayılan davranışın güncellenmesine ilişkin bu değişiklikler hâlâ korunduğu için nispeten yeni olan ve farklı tarayıcılar bunları farklı şekillerde işler. Web sitemiz g.co/newsinitiative/labs üzerinden chromium.org'daki güncellemeler sayfasına sayfasına bakın, ancak bu listede olası her örneğe yer verilmemiş olabilir.

Geçici çözümlerden biri, her bir çerezi hem yeni hem de eski stilde ayarlamaktır:

Set-cookie: 3pcookie=value; SameSite=None; Secure
Set-cookie: 3pcookie-legacy=value; Secure

Daha yeni davranışı uygulayan tarayıcılar, çerezi SameSite ile ayarladı. değer. Yeni davranışı uygulamayan tarayıcılar bu değeri yoksayar ve 3pcookie-legacy çerezi. Dahil edilen çerezleri işlerken, siteniz önce yeni çerez stilinin olup olmadığını kontrol edin ve ardından yeni bir çerez bulamazsa eski çerezi devre dışı bırakır.

Aşağıdaki örnekte, Express çerçevesi ve cookie-parser ara katman yazılımları:

const express = require('express');
const cp = require('cookie-parser');
const app = express();
app.use(cp());

app.get('/set', (req, res) => {
  // Set the new style cookie
  res.cookie('3pcookie', 'value', { sameSite: 'none', secure: true });
  // And set the same value in the legacy cookie
  res.cookie('3pcookie-legacy', 'value', { secure: true });
  res.end();
});

app.get('/', (req, res) => {
  let cookieVal = null;

  if (req.cookies['3pcookie']) {
    // check the new style cookie first
    cookieVal = req.cookies['3pcookie'];
  } else if (req.cookies['3pcookie-legacy']) {
    // otherwise fall back to the legacy cookie
    cookieVal = req.cookies['3pcookie-legacy'];
  }

  res.end();
});

app.listen(process.env.PORT);

Bu yaklaşım, gereksiz çerezleri ayarlamak ve belirli özellikleri hem çerez ayarlanır hem de okunduğunda değişir. Ancak, davranışlarına bakılmaksızın tüm tarayıcıları kapsamak ve üçüncü taraf çerezlerini tutmak yardımcı olur.

Alternatif olarak, bir kullanıcı aracısı dizesini kullanarak bir Set-Cookie üstbilgisi gönderildi. Daha fazla bilgi için uyumsuz istemcilerin listesini, kullanıcı aracısı algılama kitaplığını kullanarak örnek olarak ua-parser-js kitaplığı Node.js'de çalışır. Bu yaklaşımda yalnızca bir değişiklik yapmanız gerekir ancak kullanıcı aracısı koklama işlevi, etkilenen tüm kullanıcıları yakalamayabilir.

Dil, kitaplık ve çerçevelerde SameSite=None desteği

Dillerin ve kitaplıkların çoğunluğu SameSite özelliğini destekler. çerezler. Ancak, SameSite=None ekleme işleminin hâlâ nispeten daha büyük olması nedeniyle şu an için bazı standart davranışlara geçici olarak çözüm bulmanız gerekebilir. Bu davranışlar, GitHub'da SameSite örnek deposu.

Yardım alma

Çerezler web'in her yerinde kullanılır ve geliştirme ekipleri için nadiren kullanılır. sitelerinin bunları nerede ayarladığı ve kullandığı konusunda tam bilgiye sahip olmaları, %30'luk bir artış sağlar. Bir sorunla ilk defa karşılaştığınızda, birisi sorunla karşılaştı. Lütfen bize ulaşmaktan çekinmeyin: