Birinci taraf kurabiye tarifleri

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.

Milica Mihajlija
Milica Mihajlija

Ç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.

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;
Ayrıntılar

Host , bazı özellikleri zorunlu kılan, diğerlerini yasaklayan isteğe bağlı bir ön ektir:

  • Secure mevcut olmalıdır
  • Domain atlanmalıdır
  • Path, / 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 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;
Ayrıntılar

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.

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;