Bob, bir şeyi başarmak için bir web uygulaması kullanıyor. Ve:
- Tarayıcısı diyette, bu nedenle çerezleri desteklemiyor .
- Web uygulaması popülerdir ve belirli bir anda birçok kullanıcıyla ilgilenir - iyi ölçeklendirilmesi gerekir . Oturumu tutmak eşzamanlı bağlantıların sayısına bir sınır getirdiği ve elbette göz ardı edilemeyecek bir performans cezası getireceği sürece oturumsuz bir sisteme sahip olmak isteyebiliriz :)
Bazı önemli notlar:
- ulaşım güvenliğine sahibiz ( HTTPS ve en iyi arkadaşları);
- Perdelerin ardında, web uygulaması mevcut kullanıcı adına harici hizmetlere pek çok işlemi devreder (bu sistemler Bob'u kullanıcılarından biri olarak tanır) - bu, onlara Bob'un kimlik bilgilerini iletmemiz gerektiği anlamına gelir .
Şimdi, Bob'un kimliğini nasıl doğrulayacağız (her istekte)? Böyle bir şeyi uygulamanın makul bir yolu hangisidir?
- HTML formunda gizli alanlar aracılığıyla kimlik bilgileriyle tenis oynamak ... top kimlik bilgilerini ( kullanıcı adı ve şifre ) içerir ve iki raket sırasıyla tarayıcı ve web uygulamasıdır. Başka bir deyişle, verileri çerezler yerine form alanları aracılığıyla ileri geri taşıyabiliriz. Her web isteğinde, tarayıcı kimlik bilgilerini gönderir. Yine de, tek sayfalık bir uygulama söz konusu olduğunda , kimlik bilgilerini içeren web formu web sayfasının tüm ömrü boyunca canlı tutulabileceğinden , tenis oynamak yerine lastik bir duvara karşı squash oynamak gibi görünebilir. (ve sunucu, kimlik bilgilerini geri vermeyecek şekilde yapılandırılacaktır).
- kullanıcı adı ve şifreyi sayfa bağlamında depolamak - JavaScript değişkenleri vb. Burada tek sayfa gereklidir, IMHO.
- şifrelenmiş belirteç tabanlı kimlik doğrulama. Bu durumda, oturum açma eylemi, şifrelenmiş bir güvenlik belirtecinin (kullanıcı adı + parola + başka bir şey) oluşturulmasıyla sonuçlanır. Bu jeton müşteriye geri sunulacak ve gelecek isteklere jeton eşlik edecek. Bu mantıklı mı? Zaten HTTPS'ye sahibiz ...
- diğerleri ...
- son çare: bunu yapmayın, oturumda kimlik bilgilerini saklayın! Oturum iyidir. Kurabiye olsun veya olmasın.
Daha önce açıklanan fikirlerden herhangi biriyle ilgili olarak aklınıza herhangi bir web / güvenlik endişesi geliyor mu? Örneğin,
- zaman aşımı - kimlik bilgileriyle birlikte bir zaman damgası tutabiliriz (zaman damgası = Bob'un kimlik bilgilerini girdiği zaman). Örneğin ne zaman ŞİMDİ - zaman damgası> eşiği , isteği reddedebiliriz.
- Siteler arası komut dosyası koruması - hiçbir şekilde farklı olmamalı, değil mi?
Bunu okumak için zaman ayırdığınız için çok teşekkür ederim :)