Çerezler ve Tuzlu sağlamalarını kullanarak PHP Giriş sistemi

3 Cevap php

I am developing a PHP-based login system. Each user has an ID(a number) and a password, which is stored as a salted hash.

Bir giriş sucessful olup olmadığını anlamaya muktedir değilim, ama (kullanıcı kalıcı dışarı oturum değil ki) şimdi ben bir yere bu bilgileri saklamak gerekir.

In the past, I've played with $_SESSION variables. However, these seem to be deleted when the user leaves the browser, which is undesired. Also, I can not "assume" that the user won't try to trick the system, so it has to be safe.

Yani, benim sorular şunlardır:

  1. Ben kullanmalı mıyım $_SESSION veya $_COOKIE? Bu yaklaşımların her birinin başlıca avantajları nelerdir?
  2. Nasıl bir 'Beni hatırla' kutusunu uygulamak?
  3. Hangi bilgiler session / cookie değişkeni saklanmalıdır?

Hiçbir veritabanı güvenlik sorunları özellikle bu soru dikkate alındığını unutmayın.

3 numaralı ilişkin, ne tam olarak demek:

  • Ben çerez / oturumda kimliği ve kullanıcı karma parolayı depolamak veya Should
  • Ben çerez / oturumda kimliği ve kullanıcı olmayan karma şifre saklamak, ya da olmalıdır
  • Ben bir "Sessionıd" ve parolayı depolamak olmalıdır (karma veya non-karma?) Veya
  • Ben bir "Sessionıd", "kimliği" ve şifre (tekrar, karma veya non-karma) muhafaza edilmelidir?

I want to keep my website as safe but efficient and user-friendly as possible. If a SessionID-based approach is taken, I'd also appreciate some explanation regarding how to store it in the database.

Şimdiden teşekkürler

EDIT: Eran ait ve birleştirilmiş Brian'ın cevapları ne gerek gibi görünüyor. Kabul ettiği gibi ne yazık ki, ben onlardan sadece birini işaretleyebilirsiniz. Devam edin ve bir daha yararlı olduğunu görmek için uygulamaya çalışacağım.

3 Cevap

Ben Eran adlı noktası never kullanıcılar parolayı depolamak ya da oturum veya çerez veri şifre karma yinelemek istiyorum.

Genel olarak ben Çerezleri kullanarak web uygulamaları beni hatırlar işlevsellik uygulanan ettik. "Güvenli" kalıcı oturum sistemi bina hakkında bilgi için başlamak için iyi bir yer bu blog post on the fishbowl.

Eğer oturum açma güvenli olduğundan emin olması gerekir Eğer https kullanmak zorunda. Onlar şifreli değilse tanımlama veya oturumları çalıntı olabilir çünkü bu.

Takip etmek için başka iyi uygulama 2-seviyeli bir giriş sistemidir. Eğer giriş yapmadan sepetinize şeyler ekleyebilirsiniz ama bazı moda hesabınızı ödeme ya da düzenlemek istiyorsanız size tekrar şifre girmek zorunda Amazon gibi siteler, bu görebilirsiniz.

Hassas bilgileri için (örneğin, kimlik doğrulama sonuçları) yalnızca oturumları kullanın. Oturumlar, sunucu tarafı saklanır ve daha az tehlikeye olması muhtemeldir vardır.

Oturum ömür ilgili olarak, varsayılan tarayıcı oturumu ömrü - ama bunu kontrol edebilirsiniz. Bu etkiler birkaç ayar vardır:

session.gc_maxlifetime - etkin oturumun ömrünü kontrol eder.

session.gc_probability ve session.gc_divisor birlikte oturumun çöp toplama gerçekleşecek ne sıklıkta belirler.

Ve son olarak - session.cookie_lifetime oturum tanımlama (bu URL üzerinden tranmistted olmak zorunda değildir bu yüzden session id tutan çerez) ömrünü kontrol eder. Bu session.gc_maxlifetime değeri ile eşleşmesi gerekir.

Ayrıca, (hatta karma biçiminde) oturumları veya kurabiye şifreleri saklamak asla. Kimlik Sadece sonuçları.

$ _SESSION Kimliğini saklamak ancak karma veya non-karma şifre saklamak yok. Kullanıcı giriş ve kimlik $ _SESSION kaydedildikten sonra, bir daha şifre gerekmez.