Çerez desteğini kontrol etmenin yaygın bir yolu yeniden yönlendirmedir.
Bunu yalnızca, kullanıcı oturum açmak veya sepetine bir şey eklemek gibi bir oturumu başlatan bir şey yapmaya çalışırken yapmak iyi bir fikirdir. Aksi takdirde, bunu nasıl ele aldığınıza bağlı olarak, çerezleri desteklemeyen kullanıcıların veya botların sitenizin tamamına erişimini potansiyel olarak engelliyorsunuz.
İlk olarak, sunucu oturum açma verilerini normal şekilde kontrol eder - oturum açma verileri yanlışsa, kullanıcı bu geribildirimi normal şekilde alır. Doğruysa, sunucu hemen bir çerezle yanıt verir ve o çerezi kontrol etmek için tasarlanmış bir sayfaya yönlendirme yapar - bu sadece aynı URL olabilir, ancak sorgu dizesine bir miktar bayrak eklenebilir. Bu ikinci sayfa çerezi almazsa, kullanıcı, tarayıcısında çerezler devre dışı bırakıldığı için oturum açamayacağını belirten bir mesaj alır.
Giriş formunuz için Yönlendirme Sonrası-Alma modelini halihazırda izliyorsanız, çerezin bu ayarı ve kontrol edilmesi herhangi bir ek istek eklemeyecektir - çerez mevcut yönlendirme sırasında ayarlanabilir ve yüklenen hedef tarafından kontrol edilebilir. yönlendirmeden sonra.
Şimdi, neden her sayfa yüklemesi dışında yalnızca kullanıcı tarafından başlatılan bir işlemden sonra bir çerez testi yapıyorum. Sitelerin her sayfada bir çerez testi uyguladığını gördüm, bunun siteyi taramaya çalışan arama motorları gibi şeyler üzerinde etkisi olacağını fark etmedim. Diğer bir deyişle, bir kullanıcı çerezleri etkinleştirdiyse, test çerezi bir kez ayarlanır, bu nedenle yalnızca istediği ilk sayfada bir yönlendirmeye katlanmak zorundadır ve bundan sonra yeniden yönlendirme olmaz. Ancak, herhangi bir tarayıcı veya arama motoru gibi çerezleri döndürmeyen diğer kullanıcı aracıları için her bir sayfa basitçe bir yeniden yönlendirmeyle sonuçlanabilir.
Çerez desteğini kontrol etmenin başka bir yöntemi de Javascript'tir - bu şekilde yeniden yönlendirme gerekmez - bir çerez yazabilir ve saklanıp saklanmadığını görmek için hemen hemen geri okuyabilirsiniz. Bunun dezavantajı, istemci tarafında komut dosyasında çalışmasıdır - yani, sunucuya geri dönmek için tanımlama bilgilerinin desteklenip desteklenmediğine ilişkin mesajı hala istiyorsanız, o zaman bunu bir Ajax çağrısı gibi düzenlemeniz gerekir.
Kendi uygulamam için, kullanıcı oturum açmadan önce oturum açma ekranında rastgele bir belirteç içeren bir çerez ayarlayarak ve kullanıcı oturum açma bilgilerini gönderdiğinde bu belirteci kontrol ederek, CSRF saldırılarının bir çeşidi olan 'Oturum Açma CSRF' saldırıları için bir miktar koruma uyguluyorum. detaylar. Google'ın Giriş CSRF'si hakkında daha fazla bilgi edinin. Bunun bir yan etkisi, oturum açtıkları anda o çerezin varlığını kontrol edebiliyorum - fazladan bir yönlendirme gerekli değildir.