2013-07-18 35 views
5

Çerez kullanmak yerine, her istekte gönderilecek bir JWT jetonu kullanıyorum. Her istek bir POST isteğidir, böylece belirteç tarayıcının geçmişine kaydedilmez.SSL etkin sitesinde Çerez yerine JWT'yi kullanma

Tek sayfalık bir uygulama.

{ 
    userId: 12345678, 
    expires: <UNIX timestamp>, 
    otherInfo: <something> 
} 

Herşey SSL güvenceli geçerli: gibi

belirteç görünüyor. Simge, kullanıcı oturum açtığında sunucuda oluşturulur.

Bu, bir çerezi değiştirmenin iyi bir yolu olabilir mi, yoksa herhangi bir kusur görüyor musunuz?

+0

Neden tarayıcı geçmişi GET istekleri için bile tek sayfalık bir uygulama için sorun olur? AJAX istekleri tarayıcı geçmişine inmiyor. Ancak, jetonu "Yetkilendirme" başlığına daha iyi koyarsanız, sonuçta GET kullanıyorsanız, erişim günlüklerinde yanlışlıkla görünmez. –

cevap

1

Hayır, bu iyi bir çözüm değil. Çapraz talep kalıcılığı için (bir httpOnly bayrağıyla) çerezleri kullanma değil isteğe bağlıdır - bu güvenle Sayfada JavaScript kodu doğrudan erişemez bu şekilde, oturum kimlik bilgilerini depolamak için tek yoldur.

Bu, örn. Bir XSS saldırısında, komut dosyalarının kimlik bilgilerine erişememesini sağlayarak oturum çalma, ancak yine de sunucuya isteklerde kullanılabilir.

JWT kullanımınız bir sorunu gerçekten çözmüyor gibi görünmüyor - neden bir oturum oturumunu kullanarak oturum çerezlerini kullanmıyorsunuz? Bu tür bir şey, tam olarak ne için yapıldıklarıdır.