Çerezler: ilk sürümlerinde, benzersiz bir istemciye sahip bir metin dosyası, istemci hakkında gereken diğer tüm bilgileri (ör. Roller)
Çerezler, key-value
başlangıçta istemci etkinliğiyle ilgili verileri tutmak için adreslenen gruplardır . Bu saklama , oturum veya başvuru durumu olarak bildiğimiz şeydir . Temel olarak, web uygulamalarının durumunu tutmak için yapılmıştır; daha spesifik olarak, istemci tarafındaki durum. (1)
Çerezler genellikle sunucu tarafından yanıt üstbilgileri ( Set-Cookie key=value
) ile ayarlanır . Ancak, istemci tarafından da ayarlanabilir. Örneğin, DOM ( document.cookie
) ile.
Çerezler hakkında bilinmesi gereken önemli bir şey, kullanıcıları tanımlamamalarıdır. Daha çok terna verilerini (istemci - sunucu / yol) ilişkilendirir . (3)
Çerezleri genellikle dosyalarla ilişkilendiririz, çünkü web tarayıcılarının ilk günlerinde, çerezleri bir şekilde devam ettirmek zorunda kalıyorlardı, dosyalar en uygun destek oldular. Bugünün tarayıcıları çerezleri (diğer şeylerin yanı sıra) yerel depolarda (gömülü DB'ler) saklar.
Oturum: yalnızca benzersiz istemci kimliği bir dosyaya (çerez de denir) gönderilir, diğer her şey sunucuda depolanır.
Oturumla, sanırım sunucu oturumları demek istiyorsun . Yorum yaptığım gibi, oturumlar istemci tarafında da uygulanabilir. İstemci tarafı oturumları arasındaki fark, verilerin sunucu tarafında bir yerde saklanmasıdır. (2) Bu tür senaryolarda elde ettiğimiz şey bir oturum kimliği; ve kurabiye biçiminde alıyoruz. Oturum kimliği olmadan, sunucu gelen istekleri istemcinin önceki etkinliğiyle ilişkilendiremez. (3) Örneğin, kimliği doğrulanmış kullanıcı, alışveriş sepeti vb.
Her durumda, oturum kimliği mutlaka bir kullanıcıyı tanımlamaz. Belirli bir uygulama durumunu bir web istemcisiyle ilişkilendirir. Oturumlar kullanıcı verileri içerebilir veya içermeyebilir.
Dağıtılmış uygulamalarda, oturum bariz nedenlerle serileştirilebilir olmalıdır. Bellekte saklanıyorlarsa, bellek içi depolama (bileşen) serileştirilebilir olmalıdır. Yaygın bir çözüm, oturumları dosyalarda saklamaktır. Ya da Redis gibi NoSQL DB'de.
Güvenlik konusunda. Sunucu tarafı oturumları istemci tarafından daha güvenlidir. İstemciler tehditlere karşı daha savunmasızdır, çünkü kullanıcılar genellikle maruz kaldıkları tehditlerin farkında değildir. En azından normal kullanıcı değil.
Öte yandan, bir sunucu tarafı altyapıya saldırmak üç değerlilikli değildir.
JWT: her şey jetonda saklanır (çerez olarak da adlandırılan bir metin dosyasında da saklanabilir)
Pek sayılmaz. JWT, temel olarak jetonun yetkilendirmesi ve düzenleyicisi ile ilgili verileri depolar.
Kullanıcı kimliğini (alt) içermek için kullanmasına rağmen, kimliği doğrulanmış kullanıcıları tanımlamayan JWT'ler buluyoruz. Örneğin, konuk oturumları için jetonlar. JWT'lerin ana içeriği taleplerdir ; yetkilendirme işlemi tarafından kontrol edilecek öğeler.
JWT'lerin küresel depolar olmadığını akılda tutmak önemlidir . Oturum veya uygulama durumu hala bir yerlerde saklanan ve bağımsız olarak yönetilen gerekmektedir.
JWT'lerle ilgili olarak, bunlar yerel depolarda da saklanabilmelerine rağmen, genellikle çerez olarak saklanır. Dahası, OWASP topluluğu sessionStorage'ı web tarayıcıları için daha güvenli olarak görmektedir . Ancak, tarayıcının sürümüne bağlıdır .
1: Dünya Çapında Ağ vatansızdır. Durumsuz sunucu tarafı uygulamaları oluşturmak istiyorsak, oturumlar istemci tarafında bir yerde saklanmalıdır.
2: Sunucu tarafı uygulamasını durum bilgisi olan bir uygulamaya dönüştürme .
3: İstemci uygulama olarak, kullanıcı olarak değil.
user_id
oturum açmış bir kullanıcı için yalnızca bir şey içerebilecek bir çerezde (bu günlerde normalde şifrelenmiş) sakladığını unutmayın .