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 çerezlerSameSite=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.
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.
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.
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:
- Şurada sorun
GitHub'da
SameSite
örnek deposu. - Şurada soru sorun: "samesite" etiketi için de kullanabilirsiniz.
- Chromium'un davranışıyla ilgili sorunlar için şuraya bir hata bildirin: Chromium sorun izleyici.
- Chrome'un ilerleme durumunu
SameSite
güncelleme sayfası.