Güvenliği sağlamak, tarayıcılar arası uyumluluğu sağlamak ve üçüncü taraf çerezleri kullanımdan kaldırıldıktan sonra bozulma ihtimalini en aza indirmek için birinci taraf çerezlerinin nasıl ayarlanacağını öğrenin.
Çerezler, kullanıcının bağlamına göre birinci veya üçüncü taraf olabilir (kullanıcının o anda hangi sitede olduğuna bağlı olarak). Çerezin kaydedilebilir alan adı ve şeması, mevcut üst düzey sayfayla (yani tarayıcının adres çubuğunda görüntülenen sayfayla) eşleşiyorsa çerez, sayfayla aynı siteye ait olarak kabul edilir ve genellikle birinci taraf çerezi olarak adlandırılır.
Mevcut sitenin dışındaki alanlardan gelen çerezlere genellikle üçüncü taraf çerezleri denir.
Muhteşem birinci taraf kurabiye tarifi
Ayarladığınız çerez, sitelerde kullanılmıyorsa (örneğin, sitenizdeki oturumları yönetmek için) ve siteler arası bir iframe'de hiçbir zaman kullanılmıyorsa, bu çerez her zaman birinci taraf bağlamında kullanılır.
Varsayılan olarak çerezler siteler arasında paylaşılabilir, JavaScript'e erişilebilir ve HTTP bağlantıları üzerinden gönderilebilir. Bu da bazı gizlilik ve güvenlik risklerini beraberinde getirir. Özel Korumalı Alan ve kaynak bağlantılı çerezler gibi diğer teklifler aracılığıyla varsayılan davranışı iyileştirmek için çalışmalar devam ediyor. Bununla birlikte, çerezlerinizde ek özellikler ayarlayarak yapabileceğiniz birçok şey daha var.
Aşağıdaki yapılandırma, çoğu birinci taraf çerezi için güvenlik ve tarayıcılar arası uyumluluk sağlayan en iyi uygulamadır. Bu işlem size, izinleri yalnızca gerekli olduğunda açmak için ayarlayabileceğiniz güvenli bir temel sağlar. Bu makalede, bazı belirli kullanım alanları için tarif varyasyonları da ele alınmaktadır.
Tarif
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Host
, bazı özellikleri zorunlu kılan, diğerlerini yasaklayan isteğe bağlı bir ön ektir:
Secure
mevcut olmalıdırDomain
atlanmalıdırPath
,/
olmalıdır
Host
eklendikten sonra, bu özelliklerin __Host
kurallarıyla uyumlu olup olmadığını kontrol etmesi için tarayıcıya güvenebilir, aksi takdirde çerezi reddedebilirsiniz.
Secure
, çerezlerin yalnızca HTTPS bağlantıları üzerinden gönderilmesine izin verdiğinden, güvenli olmayan ağlarda çerezlerin çalınmasını engeller. Sitenizi tamamen HTTPS'ye taşımadıysanız buna öncelik verin.
Domain
özelliği, hangi ana makinelerin çerez alabileceğini belirtir. Atlandığında çerez, alt alanlar hariç olmak üzere mevcut doküman ana makinesiyle kısıtlar: example.com
çerezi, her example.com
isteğinde example.com
için gönderilir ancak images.example.com
isteklerinde gönderilmez. Farklı alt alanlarda çalışan farklı uygulamalarınız varsa bu, güvenliği ihlal edilmiş bir alanın diğerlerine kapı girmesine neden olma riskini azaltır.
Path
, tarayıcının Cookie
üstbilgisini göndermesi için istenen URL'de olması gereken yolu belirtir. Path=/
ayarlanırsa çerez, bu alandaki tüm URL yollarına gönderilir. Domain
ve Path=/
birleşimi, çerezin kaynağa mümkün olduğunca yakın şekilde bağlanmasını sağlar. Böylece çerez, LocalStorage
gibi diğer istemci tarafı depolama alanına benzer şekilde davranır. example.com/a
özelliğinin example.com/b
için farklı değerler alabileceği konusunda herhangi bir karışıklık yoktur.
HttpOnly
özelliği, JavaScript erişimini kısıtlayarak sitelerinizde kötü amaçlı üçüncü taraf komut dosyalarına karşı bir miktar koruma sağlar. Bir çerezin yalnızca istek başlıklarında gönderilmesine izin verir ve document.cookie
kullanan JavaScript'in kullanılmasına engel olur.
Tarayıcı oturumları oldukça uzun sürdüğünden ve eski çerezlerin sonsuza kadar kalmasını istemediğinizden Max-Age
, çerezlerin ömrünü sınırlar. Kullanıcı oturumları gibi kısa süreli çerezler veya form gönderme jetonları gibi daha kısa süreli çerezler için uygundur. Max-Age
saniye cinsinden tanımlanmıştır ve önceki örnekte 90 gün olan 7776000 saniye olarak ayarlanmıştır. Bu, kullanım alanınıza bağlı olarak değiştirebileceğiniz makul bir varsayılandır.
SameSite=Lax
, çerezi yalnızca aynı site isteklerinde gönderilecek şekilde kısıtlar. Yani istek, mevcut tarama bağlamıyla (kullanıcının o anda ziyaret ettiği ve konum çubuğunda görüntülenen en üst düzey site) eşleşir. SameSite=Lax
, modern tarayıcılarda varsayılan ayardır ancak farklı varsayılanlara sahip olabilecek tarayıcılar arasında uyumluluk için bunu belirtmek iyi bir uygulamadır. Çerezi açık bir şekilde yalnızca aynı site şeklinde işaretleyerek, birinci taraf bağlamlarınızla sınırlandırmış olursunuz ve üçüncü taraf çerezleri kullanımdan kalktığında bu çerezde değişiklik yapmak zorunda kalmazsınız.
Farklı çerez özellikleri hakkında daha fazla bilgi edinmek için MDN ile ilgili Set-Cookie
dokümanlarına göz atın.
Alt alan adlarına sahip siteler için birinci taraf kurabiye tarifi
Alt alan adı olan bir siteniz varsa ve tüm bu alt alanlarda tek bir oturum kullanmak istiyorsanız Host
öneki çok kısıtlayıcı olabilir. Örneğin news.site
, finance.news.site
ve sport.news.site
gibi konular için alt alan adlarına sahip olabilir ve bu konuların tümünde tek bir kullanıcı oturumu olmasını istersiniz. Bu durumda, __Host
yerine __Secure
önekini kullanın ve Domain
olarak belirtin.
Tarif
Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Secure
, Host
özelliğine göre daha az gereksinim içeren isteğe bağlı bir ön ektir: Yalnızca çerezin Secure
özelliğiyle ayarlanmasını gerektirir.
Üçüncü taraf web sitelerinden başlatılan isteklerde birinci taraf çerezi erişimini kısıtlama
SameSite=Lax
çerezleri siteler arası alt isteklerde (örneğin, bir üçüncü taraf sitesine yerleştirilmiş resimler veya iframe'ler yüklenirken) gönderilmez. Ancak kullanıcılar kaynak siteye giderken (örneğin, farklı bir sitedeki bağlantıyı takip ederken) gönderilir.
SameSite=Strict
aracılığıyla üçüncü taraf web sitelerinden başlatılan isteklerle birlikte çerez erişimini daha da kısıtlayabilir ve çerez gönderimine izin vermemeyi tercih edebilirsiniz. Bu özellik, şifre değiştirme veya satın alma işlemi yapma gibi ilk gezinmenin arkasında her zaman yer alacak işlevlerle ilgili çerezleriniz olduğunda faydalıdır.
Tarif
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;