Temel güvenlik, PHP MySQL

4 Cevap php

Yani temel bir log-in sayfa yapıyorum. Ben ne iyi bir fikrim var, ama hala bazı şeyleri emin değilim.

Ben öğrenci ve tabii bir şifre sütunun tam bir veritabanı var. Ben bu sütunda md5 şifreleme kullanmak için gidiyorum biliyorum. Öğrenci e-posta ve öğrenci kimliği girer, ve onlar bir şifre e-posta ile almak eğer doğruysa.

Ama, nerede bir parola oluşturmak mı? Ben el ile tüm öğrencilere mySQL (sadece rasgele oluşturulmuş bir dize) şifre eklemek zorunda mıyım? Ve ben öğrenciye şifreyi göndermek umuyorum ki; nasıl şifre şifreli ise öğrenci göndermek için ne bilecek?

Öğrenci ilk olarak e-posta ve öğrenci kimliği girdiğinde ben şifre üreten düşünüyordum. Onlar rasgele bir dize bir e-posta almak ve aynı zamanda, ben şifreli, veritabanına aynı rasgele dize ekleyin.

Nasıl olsa çalışmak için varsayalım ki? Ve yapıyor güvensiz hissediyor ki hepsi aynı sayfada.

Uzun soluklu, newbish soru için özür dilerim. (: O AES ve RSA şifreleme) Ben bu her yanı sıra aynı zamanda facisnating bulmak

4 Cevap

Burada bir kaç şey:

  1. Bunu gerçekten karma konum şifreleyerek değildir. Yenilere karıştırmayın, ama sadece bu yoldan olsun istedim için kolay bir şey.

  2. Sadece çok güvenli bir karma değil, MD5 kullanmayın. Mümkünse SHS'nin kullanın biri yerine varyantları.

  3. Sadece şifreyi karma etmeyin, siz de "tuz" olarak isteyeceksiniz. Temelde bu onu hash önce şifre rastgele bir dize ekleyerek, ve (kullanıcı kendi şifresini girdiğinde size karma doğrulamak böylece) daha sonra geri alabilirsiniz bir yere bu rasgele dize depolama içerir. Bu ön-bilgisayarlı Sözlük saldırılarına karşı önlemeye yardımcı olur.

Kullanıcı kaydında ben sadece onların hesabını oluşturduğunuzda, onu üretmek onlara e-posta, daha sonra karma ve karma saklamak (ve rastgele bir tuz) olur - şifre üreten gelince, sana doğru yolda olduğunu düşünüyorum DB.

Eğer şifreler üreten ediyorsanız, bir parola oluşturmak ve öğrenciye oluşturulan şifre göndereceğiz. MD5 o şifre ve veritabanında depolamak. Birisi açtığında, MD5 onlar formda ve parola veritabanındaki biri olduğu karma karşılaştırın. Eğer uyarsa, başarılı giriş.

PHP kayıt sırasında şifre oluşturmak gerekir. Öğrenciye şifreyi e-posta sonra bir müzakere fonksiyonunun aracılığıyla çalıştırın (md5 () Tamam ama sha1 () daha iyidir). DB karma saklayın ve orijinal şifre bırakın. Bu şekilde bile ne olduğunu görebilirsiniz değil.

Kullanıcı oturum açtığında, kendi yazdığınız şifre karma ve DB saklanan karma karşı karşılaştırmak. Eğer uyarsa, kullanıcı doğru şifreyi yazdınız.

Önceki cevaplar ekleyerek, seçtiğiniz karma yönteme bağlı olarak, süreç şöyle:

1 -. Bu şifre öğrencilerin kimliğini ve e-posta girin ilk defa üreten iyi bir fikirdir.

2 -. Onların verilerini sunmak zaman onu almak ve seçtiğiniz herhangi bir müzakere yöntemi kullanarak rastgele bir şifre oluşturmak ve bu DB depolamak.

3 -. Onlar sizin oturum açmak istediğinizde, kendi kimliği ve şifre sormak için girilen şifre karma yöntemini kullanın ve depolanan biri ile karşılaştırın.

4 -. Onların şifrenizi kaybedebilir ve karma yöntem geri veya iptal edilmesi için bir yol varsa almak için hiçbir yolu yoktur, sen, yeni bir şifre oluşturmak için öğrencinin e-posta gönderilir geçici bir bağlantı oluşturmak için bir yöntem uygulamak gerekir eski bir. Karma yöntemi ters olabilir, o zaman hiçbir sorun sadece de-karma,, ve o Studen adlı e-posta gönderin.

Bu biraz sürecini açıklar umuyoruz :)