Nasıl bir destek veritabanı olmadan FORM tabanlı kimlik doğrulaması uygulamak istiyorsunuz?

4 Cevap php

Ben bir CGI programı olarak çalışan bir PHP komut dosyası ve HTTP Authenticate başlık yemiş ve dışarı tükürmek alır var. Yani FORM tabanlı kimlik çeşit uygulamak istiyoruz. Ek bir kısıtlama olarak, hiçbir oturum veri saklanabilir hiçbir veri tabanı yoktur.

Ben bir ana kullanıcı adı ve şifre olan çok açığım. Ben sadece bu kimlik bilgilerini bilmediği bir saldırgan uygulamayı korumak gerekir.

Peki bu uygulamak istiyorsunuz?

Çerezler?

Ben formu mevcut olabilir ve bu doğrular, ben gizli kodu gelip IP adresi karma bir çerezi geri gönderebilirsiniz. Şey doğru çözer sürece Sonra render sayfaları önleyebilirsiniz. Ama PHP, uygulamak için nasıl hiçbir fikrim yok.

4 Cevap

Bunu verebilecek bir kaç yolu.

  1. htaccess - Lütfen webserver kolu (gerçi dayalı tam olarak cgi formu) söz konusu sayfaları güvence var.
  2. Passwordhash: dosyasındaki her satır adınız düz bir dosyada şifreleri saklamak için tanımlama bilgileri ve karma algoritması çeşit (md5 yeterince iyi değil) kullanın. Gökkuşağı tabloları vs ekstra güvenlik için salt sizin sağlamalarının emin olun. (Bu yöntem, bu yol giderseniz güvenlik very dikkatli olun ... biraz saflık olur)
  3. Sadece kimlik doğrulama işlemek için bir sqlite veritabanı gibi bir şey kullanın. Sqlite kompakt ve büyük bir db arkaplana istemiyorsanız bile hala ihtiyaçlarınızı karşılayabilir yeterince basittir.

Eğer bir veritabanı olamaz bile Teorik olarak, aynı zamanda, düz bir dosyada oturum verilerini saklamak olabilir.

Şu anda kimlik doğrulaması kullanıyorsanız, o zaman zaten bir htpasswd dosya olabilir. Eğer bu dosyayı kullanmaya devam etmek istiyorum, ama FORM tabanlı kimlik doğrulaması kullanarak yerine Authenticate başlığının üzerinden geçmek istiyorsanız, size aynı Htpasswd dosyayı kullanmak ve kimlik doğrulama durumunu korumak için oturumları kullanmak için bir PHP komut dosyası kullanabilirsiniz.

Php htpasswd için hızlı bir Google arama this page bir htpasswd karşı kimlik bilgilerini kontrol etmek için bir PHP fonksiyonu ile ortaya koymaktadır. Bu gibi bazı kod ile (size autostart ayarlanmış seans varsayarak) entegre olabilir:

// At the top of your 'private' page(s):
if($_SESSION['authenticated'] !== TRUE) {
	header('Location: /login.php');
	die();
}

// the target of the POST form from login.php
if(http_authenticate($_POST['username'], $_POST['password']))
	$_SESSION['authenticated'] = TRUE;

Eğer gerçekten bir form gerekir mi? Olursa olsun ne, sen bilinen ediliyor kullanıcı adı ve şifre ile sınırlı konum. Onlar da biliyor, bunları sağlayan sihirli çerez olsun. Onların sırrı bilmek yoksa onlara sayfaları görmesini engellemek istiyorum, ve temel yetkilendirme kurmak kolaydır, bunu yapmaz, ve sizin açınızdan bir sürü iş gerektirmez.

Eğer gerçekten web sunucusu sizin için erişim kontrolü önemser eğer Yetkilendirme başlığı görmek gerekir mi?

(Yerine halka daha) insanların bilinen bir listesine uygulama sağlayan eğer Ayrıca, bu tür gelen IP adresi, istemci sertifikaları, ve birçok diğer şeyler gibi diğer faktörlere web sunucu tabanlı erişim sağlayabilir yapılandırmasına ziyade programlama meselesi. Eğer güvenlik kısıtlamaları açıkladı, biz daha iyi bir çözüm sunmak mümkün olabilir.

İyi şanslar :)

Tuz ... Hakkında, senin karma tuz adını ekleyin, tuz bilir ve bir gökkuşağı tablo yazmak ve kullanıcı parolasının sayıda çatlak şifrenizi dosyasına erişimi birini engeller.