Php oturumlar güvenli bir günlüğüne

4 Cevap php

Benim soru rutin güvenli bir günlüğü yaratıyor. Saklanan değerlere kullanıcı adı ve parolayı karşılaştıran sonra true giriş adında bir oturum değişkeni ayarlayın. Sonra kullanıcı web sayfası etrafında dolaşır gibi sadece kullanıcı erişimi olmalıdır olmadığını belirlemek için true veya false için giriş değişkeni kontrol edin.

Bu benim ilk kez böyle bir şey yaratıyor. Bu güvenli midir? Kullanıcıların geçerli olduğundan emin olmak için yapıyor olması gereken başka bir şey var gibi hissediyorum.

4 Cevap

Lütfen oturum çerezi alır herkes, senin gibi giriş yapabiliyor. Eğer bir IP adresi için bir oturum bağlarsanız, bu çok zor. Ama bu size ip adreslerini değiştirerek insanlarla sorunları verebilir. O sorun değer olup olmadığını karar vermek size kalmış.

Eğer hassas bilgilerin her türlü kullanım ve sadece kişisel bir kullanıcı deneyimi sunmak için çalışıyor değilseniz, ne yaptığını gayet iyi. Eğer güvenlik konusunda gerçekten ilgili iseniz Ancak, alabilir diğer bazı yaklaşımlar vardır. İlk "user_tokens" veya benzer bir şey olarak adlandırılan bir veritabanı tablosu oluşturmaktır. , Bir kullanıcı işaretleri rasgele bir anahtar oluşturmak ve anahtar ile ilişkili tablodaki ip adresi saklayın. Ayrıca, müşterilerin makinede bir tanımlama olduğunu anahtarını saklayın. Herzaman onlar hassas bir şeyler yapmaya çalıştığınızda, veritabanının kendi ip adresi ve çerez anahtarını karşılaştırabilirsiniz.

Cross-Site-Scripting (XSS) ve oturum gaspına içine biraz araştırın. Ben yukarıda açıkladık yöntem gerçekten bu aşağı kesecek.

Tabii, güvenli ama güvensiz şartlar / saldırıları önlemek için alınması gereken önlemler vardır.

Eğer hiç tarif ettik mekanizması ile yanlış bir şey yok. Ama uygulama eksik / belirsiz olduğunu. Şifre depolama ve giriş için kullanacağınız prosedürleri göz önünde bulundurmanız gerekir.

In response to a complaint, here's some issues OWASP brings up about authentication/sessions.

1. Are credentials always protected when stored using hashing or encryption?.

Evet, tuzlu sağlamalarının olarak kullanıcıların şifreleri saklamak.

2. Can credentials be guessed or overwritten through weak account management functions (e.g., account creation, change password, recover password, weak session IDs)?

Hayır, bu fonksiyonlar bir güvenlik sorusu / e-posta bağlantısı ile korunmalıdır.

3. Are session IDs exposed in the URL (e.g., URL rewriting)?

Hayır, bunlar olmamalı.

4. Are session IDs vulnerable to session fixation attacks?

Hayır, kullanıcıların oturum açma dışında herhangi bir araç ile kendi session id ayarlamak için izin vermez.

5. Do session IDs timeout and can users log out?

Kullanıcı aksi belirtilmediği değil durumlarda "iki hafta boyunca çevrimiçi kalmak", oturumları kısa zamanda tanıya götürecek sona gerekir.

6. Are session IDs rotated after successful login?

Evet kullanan session_destroy() ve session_start() bu başarmak olacaktır.

7. Are passwords, session IDs, and other credentials sent only over TLS connections?

Tabii.

Sonuçta, sen idare edeceksin veri türünü göz önünde bulundurmanız gerekir. Başka bir yerde onların veri tehlikeye olabilir beri birisi, bir kullanıcının şifre erişmek asla izin vermeyin. Eğer colorakitten.com çalıştırıyorsanız Ama, eğer kaçırılan seans olasılığı üzerinde gevşek değil uyku yapın: "Oh hayır, birileri hesabımı kesmek ve kedilerimi renksiz."

Okuyun: http://stackoverflow.com/questions/328/php-session-security

Muhtemelen düzgün kullanıcı için herhangi sayfalarını özelleştirmek için de oturumda adını saklamak istediğiniz için gidiyoruz. Ne açıklanan "güvenli" olduğunu, ancak uygulamanın güvenliği yapıyorsun başka ne bilmeden değerlendirmek zordur.