Soran
C# da sql veri tabanı kullanılarak maile şifre yollama

Soru
-
Merhabalar başlıkta biraz absürt yazdım farkındayım. Benim elimde bir tane sql veri tabanı var ben burada kullanıcının şifresini tutuyorum. C#'da ise şifremi unuttum bölümü kullanıcı mailini girdiğinde mailine random 6 haneli kod yollattırıyorum. Buraya kadar herşey normal ama ben bu kodu nasıl kontrolünü sağlayabilirim? Yardımcı olursanız sevinirim. Kolay Gelsin. İyi akşamlar
Tüm Yanıtlar
-
Gonderdiginiz kod gecici şifresi degil mi zaten.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database. -
int sayi;
Random rnd = new Random();
private void RememberMe_Button_Click(object sender, EventArgs e)
{
sayi = rnd.Next(10000, 90000);
MailMessage msj = new MailMessage();
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("Gönderen Mail Adresi", "Gönderen mail adresinin sifresi");
client.Port = 587;
client.Host = "smtp.live.com";
client.EnableSsl = true;
msj.To.Add(RememberMe_Textbox.text);
msj.From = new MailAddress("mailadresi");
msj.Subject = "Sifre Sifirlama";
msj.Body ="Dogrulama Kodunuz : "+sayi.ToString();
client.Send(msj);
}Hocam bu mail sayfasının kodu ben bu sayi değişkenini insert into ile ekler gibi mi tutucam veri tabanında?
-
Hayir, veritabanında şifreler o sekilde tutulmaz. Onun yerine şifreyi bir 'salt' degeri ile hashlersin ve hash sonucunu tutarsın (tek yonlu algoritma). Sql Server, ornek adventure works veritabanında da ornegi var. Binary yerine, hash degerini base64 encode ile text seklinde tutabilirsin.
Hash ornegi:
void Main() { // hash1, hash2 veritabaninan saklanan degerler string hash1 = CreatePwdHash("pwd", "a@b.com"); string hash2 = CreatePwdHash("pwd", "c@d.com"); Console.WriteLine("1:{0}\n2:{1}", hash1, hash2); // kullanici girerken parolasini yaziyor // yazdigi parola veritabanindaki emaili // ve hash degeri ile kontrol ediliyor: var valid1 = ValidatePassword("pwd", "a@b.com", hash1); // hash1 ona ait var valid2 = ValidatePassword("pwd", "a@b.com", hash2); // hash2 baskasinin Console.WriteLine("{0},{1}", valid1, valid2); } private string CreatePwdHash(string password, string saltValue) { var pwdHash = MD5 .Create() .ComputeHash(Encoding.Unicode.GetBytes(BitConverter.ToString(Encoding.ASCII.GetBytes(saltValue)) + password)); return Convert.ToBase64String(pwdHash); } private bool ValidatePassword(string password, string saltValue, string hash) { return CreatePwdHash(password, saltValue) == hash; }
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
- Düzenleyen CetinBasozEditor 2 Haziran 2019 Pazar 20:09