اظافه کردن application setting بصورت ایمن
	
	
		سلام دوستان
یوزر پسورد برنامه رو اگه توی فایل user.config بخوایم ذخیره کنیم که بصورت clear نباشه چه چیزی باید اظافه کنیم؟؟
        private void button1_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.username = textBox1.Text;
            Properties.Settings.Default.password = textBox2.Text;
            Properties.Settings.Default.Save();
        }
الان با کد بالا بصورت clear ذخیره میشه
	 
	
	
	
		نقل قول: اظافه کردن application setting بصورت ایمن
	
	
		
	نقل قول:
	
		
		
			
				نوشته شده توسط 
milad_d993
				
			 
			سلام دوستان
یوزر پسورد برنامه رو اگه توی فایل user.config بخوایم ذخیره کنیم که بصورت clear نباشه چه چیزی باید اظافه کنیم؟؟
        private void button1_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.username = textBox1.Text;
            Properties.Settings.Default.password = textBox2.Text;
            Properties.Settings.Default.Save();
        }
الان با کد بالا بصورت clear ذخیره میشه
 
			
		
	 
 حدالامکان خود Username و Password یا حداقل Password رو چه کد شده و چه نشده اصلا ثبت نکنید، بجای ثبت مقدار شون Hash شون رو ثبت کنید.
شما همیشه می توانید برای ذخیره سازی یک داده یک تابع رمزی دو طرفه (تابع کد کننده و تابع کد گشا) رو بکار ببرید، اما هر چقدر هم که تابع قوی ای باشه همچنان احتمال کشف داده ای که قابل برگشته هست.
Hash تابع یکطرفه داره، یعنی نام کاربری و رمز عبور میتونه به سادگی به Hash تبدیل بشه اما از Hash نمیشه به سادگی به رمز عبور یا نام کاربری رسید و همین مساله امنیت رو بالا می بره.
        private void button1_Click(object sender, EventArgs e)
        {
            Properties.Settings .Default.username = GetHash (textBox1.Text);
            Properties.Settings .Default.password = GetHash (textBox2.Text);
            Properties.Settings .Default.Save();
        }
        private string GetHash (string value)
        {
            using (var sha512 = System.Security. Cryptography.SHA512. Create())
            {
                return Convert.ToBase64String (sha512.ComputeHash (Encoding.UTF8. GetBytes (value)));
            }
        }
ثبت Hash به این معنا است که با داشتن Hash نمی توانید بدونید که رمز عبور  کاربر دقیقا چیه، نمی توانید به کاربر یا شخص دیگری بگید که رمز عبور اینه،  اما می توانید چک کنید که آیا رمز عبوری که وارد می کنه درسته یا نه.
        private void button2_Click(object sender, EventArgs e)
        {
            if (GetHash (textBox1.Text).Equals (Properties.Settings .Default.username)
                && GetHash (textBox2.Text).Equals (Properties.Settings .Default.password))
            {
                MessageBox.Show ("Welcome.");
            }
            else
            {
                MessageBox.Show ("Username or password is incorrect.");
            }
        }
رجوع شود به :
مشكل با متد GetHashCode 
چرا باید پسورد را هش شده در دیتا بیس ذخیره کنیم؟