Giriş kimlik doğrulama ve oturumları ile nasıl başa çıkılır?

3 Cevap php

Benim en son projesi geliştirmek CodeIgniter'ı kullanma. Söyledi ile giriş oturumları ile başa çıkmak için "en iyi" yolu nedir? Şu anda, ben DB karşı kullanıcı adı / şifrenizi kontrol edin. Bir maç var, ben çeşitli oturum değişkenleri, bunlardan biri adı olmak ayarlayın. Sitemde boyunca, ben de insanların aslında bir çeşit php oturum kimliği karşı oturumu kontrol çeşitli blogları okumak içeri kullanıcı oturum açmış olup olmadığını görmek için kontrol edin.

Yani site güvenli yapma bazı yolları nelerdir, benim sorum sanırım? Açıkçası ben bir tanımlama şey tutmak olmaz, oturumu çeşit bir DB tabloda tutulması olacaktır.

3 Cevap

CodeIgniter doğal PHP oturumları kullanmayın. Kendi oturum verilerini oluşturur. Sen arayarak Kütüphane 'session' yüklemeniz gerekir $this->load->library('session');.

Ne yapmam kullanıcı Şifreleme sınıfını kullanarak kayıt olduğunda şifresini şifrelemek için. . $ Config ['encryption_key']: Bu $this->load->library('encrypt'); ve $this->encrypt->encode("user_password") Sen config.php dosyasında bu yazarak bir şifreleme anahtarı belirtmek gerekir arayarak yapılır = "SİZİN KEY";.

Sonra kimlik bilgilerini doğrulamak için, ben DB şifrelenmiş şifre almak ve $this->encrypt->decode("user_password") diyoruz ve kullanıcı yazdı şifre ile eşleşen olmadığını kontrol edin.

Kimlik bilgilerini doğruladıktan sonra, ben CodeIgniter'ın oturumunda kullanıcıdan saklamak istediğiniz bilgi kaydedin. Bu, arzu edilen parametreleri içeren bir dizi ayarlama ve daha sonra çağrı yapılır $this->session->set_userdata($newdata);.

Örnek (kopyalanan http://codeigniter.com/user_guide/libraries/sessions.html):

$newdata = array(
               'username'  => 'johndoe',
               'email'     => 'johndoe@some-site.com',
               'logged_in' => TRUE
           );

$this->session->set_userdata($newdata);

$this->session->userdata('logged_in');: kullanıcı böyle bir şey arayarak açtıysa sonra, kullanıcı oturum olup olmadığını kontrol etmek, sadece her yöntemi test var

Bir kullanıcı oturumunu için, sadece oturumu yok: $this->session->sess_destroy();.

Benim durumumda çerçeve sizin için yapacak bir kaç şeyler var:

  1. Bu hareketsizlik zaman belirli bir süre sonra oturumu yok.
  2. CodeIgniter formlardan giriş verilerini temizler. Eğer "(" veya '"" veya kırmak veya istenmeyen SQL deyimlerini yaratabilecek diğer herhangi bir karakter girmeye çalışırsanız Örneğin, CodeIgniter sizin onları kaçar.
  3. Bu kayalar. Çok esnek ve tam bulunuyor.
  4. The user guide is your friend. Bu temelde bilmeniz gereken her şeyi içerir ve bunu yapmak için nasıl örnekler verir.

Orada doğru yolda kesinlikle vardır.

  • Veritabanına karşı kimlik bilgilerinin doğrulanması
  • Oturum verileri saklamak kimlik devlet
  • Kullanıcı kimlik doğrulaması gerektiren bir sayfaya her erişimi kimlik doğrulaması olup olmadığını kontrol edin

Oturum açma işlemi güvenli hale getirmek için:

  • , Düz metin olarak db şifreleri saklamak onların karmaları tutmayın (bir tuz ile sha1 () iyi çalışır)
  • (Bu login form verilerini içeren) kullanıcı geliyor her türlü girdiyi
  • Çerezlerin kurcalanmadığını istemediğiniz hiçbir veri depolamak etmeyin

Ben şahsen CodeIgniter'ı kullanmadıysanız, ama ben böyle bir olgun çerçeve varsayılan yerleşik sorunu ile uğraşmak sınıfları olurdu eminim.

İşte CI kimlik doğrulaması için hızlı bir öğretici olduğunu link

Olursa olsun onun sadece (umarım değil paylaşılan) hostserver kaydedilmiş beri oldukça güvenli bir oturum kaydetmek ne. Bir tanımlama kullanmak istiyorsanız, veritabanı üzerinde kullanıcı verilerine bağlantılar sadece bir belirteç muhafaza ediniz. Ben de ci bir temel kimlik doğrulama modülü olduğundan eminim, eğer onun değil geç iyi bir auth modülü ve ORM iyiliği için Kohana geçmek için.