PHP pam_auth ve kurabiye

1 Cevap php

Öykü kısa, uzun, ben bir in-house raporu motoru geliştiriyorum. Bu tamamen web (PHP ve AJAX çeşitli teknikler kullanarak) ve üretim yazılım tarafından bir MySQL veritabanında saklanan verileri yorumlama dayanır. Bir Ubuntu 8.04 sunucu üzerinde çalışan ve tüm çalışanların bu makinede bir linux kullanıcı hesabı var. Ben onların linux kullanıcı hesabı ile oturum açmak için bir kullanıcı zorlar ve belirli raporları erişmek için uygun grubuna ait olup olmadığını belirler pam_auth kullanarak bir giriş sistemi kurmak.

Bu bölümü harika çalışıyor, burada benim sorunum çerezleri kullanarak "beni hatırla" fonksiyonunu ekliyor. Kullanıcılar sadece onlara biraz zaman ve oturum sona her zaman oturum açmak zorunda şiddetlenmesi kaydetmek için 30 günlük bir çerez olması için isterim. Ben kodu "beni hatırla" bölümünü yazdı ve çerez sadece iyi saklar. Ben kendi kullanıcı adı ve parola bir md5 hash, sadece depolama ediyorum. Onları yeniden doğrulamak için zaman zaman burada sorun gelir. Normalde ben sadece veritabanından o kullanıcının bir parola hash ile depolanan kullanıcı adı karşılaştırarak bu yapardım. Ne işleri zorlaştırmaktadır ben kullanıcı adı ve şifre sağlamalarının doğrudan erişim yok olmasıdır. Hepsi / etc / passwd ve / etc / shadow saklanır ve giriş PAM modülü tarafından işlenir. pam_auth bir düz metin kullanıcı adı ve düz metin parola bekliyor.

Benim tek alternatifleri düz metin olarak, ya da tersine çevrilebilir bir şifreleme ile parolayı depolamak için ya vardır gibi görünüyor, ama ben özellikle bu fikirlerin birini sevmiyorum.

Burada daha iyi bir çözüm var mı?

1 Cevap

Eğer kullanabilirsiniz başka bir seçenek PHP'nin oturum yönetimi inşa edilmiştir. Sonra kullanıcının bilgisayarında ayarlanması gerekmektedir sadece çerez PHP sizin için otomatik olarak yapacaktır oturumun kimliğidir.

'Session.cookie_lifetime' ve 'session.gc_maxlifetime': bu iki ini ayarlarını değiştirerek PHP oturum uzunluğunu en az 30 gün ayarlayabilirsiniz. Bir kullanıcı oturum sonra bir kez kendi kullanıcı adı saklamak ve session_start çağrıldıktan sonra $ _SESSION süper küresel dizide giriş yaptığında () olabilir. Bir kullanıcı, onlar giriş yapmış ve daha az 30 gün önce olup olmadığını görmek için $ _SESSION dizideki değerleri kontrol edebilirsiniz döner.

Eğer hala diğer nedenlerle bu noktada PAM kimlik gerekiyorsa Şimdi oturum değişkeni olarak açık metin veya geri dönüşümlü olarak şifreli ya şifrelerini saklamak gerekir. Bu non-ideal olsa da, kullanıcının tarayıcısına bir çerez olarak daha güvenlidir. Daha fazla bilgi için PHP Session - Manual bakmak.