Güvenli Giriş Yapımı

4 Cevap php

Ben geliştiriyorum benim site için güvenli bir giriş yapmak için çalışıyorlar.

Bn sadece ben PHP ile MySQL veritabanı kullanmak, bu işe almak.

Ben veritabanı kullanıcı ve bilgi eklemek için formu yapabilir ama giriş ile iş yapmak gibi olamaz.

HTML ile kullanılan şifreleme ne tür <input type="password">?

Nasıl Kullanıcı benim siteye kendi ziyareti boyunca giriş tutmak mı?

Bu kullanıcı adı ile eşleşen doğru şifre olup olmadığını ben nasıl güvenli bir şekilde kontrol edebilirim?

Bunu bilmek güzel olurdu ben henüz bu kısmını öğrenmiş değil, şimdi belki bir yıl boyunca PHP yapıyor.

4 Cevap

What type of encryption is used with html < input type=password >??

Yoktur. Giriş sadece saldırıları "monitör baktığımızda" karşı korumak için maskelenir.

Eğer güvenlik istiyorsanız, (SSL ile HTTP) HTTPS üzerinden veri iletimi.

Nasıl Kullanıcı benim siteye kendi ziyareti boyunca giriş tutmak mı?

Çoğu insan çerezleri kullanır.

Bu kullanıcı adı ile eşleşen doğru şifre olup olmadığını nasıl ben sıkı kontrol edebilirim?

Güvenli?

Paylaşılan bir sunucu kullanmak yok. Güvenli, bu sunucu üzerindeki veri tutmak için normal adımları izleyin. Sağlamalarının olarak değil, düz metin olarak Mağaza şifreleri.

Kontrol?

Eşleşen karma sunulan şifre dönüştürme, sonra da normal olarak karşılaştırın. Bir veritabanında veri depolamak varsayarsak, sadece SEÇ kullanıcıların WHERE user =? AND password =? ve geri almak satır sayısını saymak.

Ben sorunuzun şifre koruma kısmına hitap edeceğiz.

Hiçbir şifre giriş tipi ile şifreleme Orada inşa edilmiştir. Tarayıcı, her şey gibi düz metin olarak sunacaktır. Parola korumak için iki yol vardır.

Ilk challenge/response system kurmak için ama bu iş için Javascript gerektirir. Temelde, kullanıcının şifresini almak o sunucuda depolanan yolu ise bir karma işlevi uygulamak, o zaman bir sunucu meydan okuma, yeni bir karma için belirteci ve tuz şifre değeri alır. Sunucu, şifre değer almak ve de meydan geçerli olacaktır. Eğer uyarsa parola doğru değil ve kimse gerçek şifre olduğunu bilmek için hiçbir yolu yoktur. Bu yaklaşımın etkili olabilmesi için ise karma istemci tarafında üretilmiş olması gerekir, çünkü bu javascript gerektirir.

Başka, daha basit bir seçenek, sitenin bölümünde günlüğü için HTTP'leri gerektiren etmektir.

David varsayılan şifreleri şifreleme yoktur söylediğim gibi, şifrelemek tutmak için https kullanın.

Lütfen kullanıcı tutmak için veritabanında saklanan ne karşı şifrenizi kontrol, giriş sayfasında, kaydedilir. Size şifreleri karma ve veritabanındaki karma parolayı depolamak gerekir (bkz. crypt). sonra zaman kullanıcı parolasını karma ve veritabanındaki karma şifre karşılaştırın, kullanıcı günlükleri. Onlar maç, giriş, aksi takdirde giriş başarısız olur. Db hiç taviz alırsa, en azından onlar şifreleri yok.

Eğer şifrenizi kontrol ettikten sonra kullanıcı, yani oturumda bir değişkeni ayarlamak, giriş tutmak için

 $_SESSION[loggedin] = true.

Her istek üzerine, bu oturum değişkeni kontrol ve doğruysa, eğer yanlış bir ile giriş sayfasına kullanıcıyı yönlendirme, sayfanın erişimine izin

 header("Location: /login.php");

şifre girişleri şifreli değildir. Eğer (form tarafından döndürülen gibi) düz metin şifreleri saklamak istemiyorsanız PHP ve MySQL ikisi tarafından sağlanan çeşitli işlevlerinden biri çalışmalıdır. şifreleri depolamak için PHP'nin md5, sha1, ya da mysql'in encrypt check out.

Sonra, onlar oturum için doğru şifreyi girdiğinizi olmadığını kontrol etmek için, kendi girişte, veritabanından karma parolasını almak ve bunları karşılaştırmak ne şifreleme yöntemini kullanabilirsiniz. (Ayrıca, içine bakmak salting passwords)

Kalıcı bir giriş oturumu olması için, PHP'nin $_SESSION değişkeni kullanabilirsiniz. ya da setcookie()