2016-03-21 15 views
0

Oturumlarım düzgün çalışıyor, TankAuth kullanarak karmaşık bir özel kullanıcı izin sistemim var. Bu projeye küçük bir proje olarak başladım, korkunç bir şeye dönüştü. Verilerin çoğu javascript frontend ile eşzamanlı olarak getirilir. Temel olarak bir istisna dışında, şimdi bir API.Codeigniter'daki eski kod tabanı 2.1.4 engelleme oturumları & ajax

Soruma sorularım ilgili. CI 3'ün (veya daha sonraki bir versiyonun), çoklu ajax çağrılarının birbirini engellememesine izin vermek için oturum kütüphanesini değiştirdiğini anlıyorum. Birden fazla ajax istekleri yürütürken, uygulamamın sonuçların gecikme süresinden sonra bir araya getirdiğini fark ettim. Bunun oturumların engellenmesi nedeniyle olduğuna inanıyorum ama güvenlik endişeleri nedeniyle bir düzeltme girişiminde bulunmaktan çekiniyorum.

Ajax çağrılarını güvenlik riski olmadan oturumları birbirinden engelleyerek nasıl durdururum?

cevap

0

Öncelikle, ben burada

... İki farklı şeyler için kelime "blok" kullandığınız inanıyoruz:

Ben CI 3 (veya bir yerde daha sonraki sürümü) değişti anlamak Birden fazla ajax çağırmak için oturum kütüphanesi birbirlerini engellememelidir.

Ve burada:

Birden ajax çalışan istekleri iken başvurum gecikmiş bir süre sonra hep birlikte getirir fark ettik. Nedeniyle sadece Oturum kütüphanesini değişmedi CodeIgniter'ın 3 seans


bloke olması bu olduğuna ikna olduğum - bu tamamen yenisi ile değiştirilir ve nedenlerinden biri neden birden istekleri için oldu 'a değil, birbirleriyle'u birbirine karıştırmayın (ilk alıntı). Bununla birlikte, bunu başarmanın yolu kilitlemeyi (veya ikinci alıntıda ve sorunuzda "engelleme" dediğiniz) kullanmaktır. Ve bundan kaçınamazsın. Ne yapabilirsiniz

, en kısa sürede isteklerinizi içinde session_write_close() çağrı olduğu gibi onlar artık $_SESSION diziyi değiştirmek gerekir - Kilidi serbest ve geçerli istek için oturumu kapatmak, ama yine için $_SESSION içeriğini koruyarak olacak okuma.

+0

Evet sağınız. Yanlış terimler için üzgünüm. Ben de burada, ben ne zaman session_write_close() güvenli bir şekilde yapabilirim. Bu, kullanıcıyı doğrulayan en kısa sürede yapılır mı? – Rossidge

+0

Bu karar vermek size kalmıştır - dediğim gibi: ne zaman bir şey değiştireceğinizi bilmediğiniz zaman, '$ _SESSION'. – Narf

+0

Peki, bu şartlar için istekte bulunmak üzere $ _SESSION'u değiştirmeyeceğim, bu yüzden kapanması iyi olacak, değil mi? Yorumlarınız için teşekkürler, bu konuda daha fazla düşünmeme olanak sağladığında, orijinal sorumdaki hatayı görüyorum, teşekkürler. – Rossidge