PDA

View Full Version : سوال: استفاده از linq to sql و امینت داده



irpersian20
یک شنبه 08 دی 1392, 23:49 عصر
سلام،
من از linq to sql استفاده میکنم
اگر دیتابیس سرور ما محل دیگری باشد و ما به آن وصل شده باشیم.
حالا توی سی شارپ ما داریم پسورد رو می نویسیم.آیا به صورت رمز نگاری ارسال میشه یا خیر؟
چه قاعده و قانونی داره؟

immortalsoull
دوشنبه 09 دی 1392, 00:13 صبح
منظورتان چی هست که در جای دیگه است ؟ توضیح بدهید لطفا
ولی اطلاعات به صورت رمز نگاری نمی رود ! و همانطور که وارد شده می رود .

irpersian20
دوشنبه 09 دی 1392, 00:40 صبح
سلام
فرضا سیستم شبکه ای هست و دیتابیس در یک نقطه دیگر هست

mousa1992
دوشنبه 09 دی 1392, 00:57 صبح
سلام
من فقط میدونم که این موضوع ربطی به linq نداره ، اون فقط ی orm هست که کارش راحت کردن کار برنامه نویسه و در نهایت تمامی کدهای شما به کدهای Sql تبدیل میشه
دقیقا یادم نیست چی بود ولی فک کنم قبلا جایی دیدم که گفته بود برا رشته اتصال و ارسال یوزر و پس از رمزنگاری استفاده میشه ولی خب بقیه داده هارو نمیدونم
- بیشتر در موردش سرچ کن این ی سر نخ بود شایدم درست نباشه
اما یوزر پسورد هایی که میفرستید توی کوئری ها میتونید کد شده ارسال کنید و کد شده هم ذخیره کنید! اصولش همینه که شما کد شده ذخیره کنید

davidrobert
دوشنبه 09 دی 1392, 09:22 صبح
بفرمایید این کد برای رمز ذخیره کردن رمز عبور در هنگام لاگین می باشد ولی باید این نکته رو در نظر بگیرد که نوع فیلد رو binary قرار بدید و طولش رو 250 یا بیشتر قرار بدید برای رمز ذخیره شدن.
برای اینکه رمز عبور رو رمز ذخیره کنید اول در فرم ثبت کاربر عمل این using
using System.Security.Cryptography; رو انجام بدید وقتی این عمل رو انجام دادید برای ذخیره اطلاعات که رمز عبور ذخیره بشه رمز عبور به صورت رمز من کل کد مربوط برای ثبت کاربر رو قرار میدم برای شما فقط این رو در نظر بگیر که میخواهید نام کاربری یکتا باشه هیچ وقت رمز نکنید فقط رمز عبور رو رمز کنید و نام کاربری رو به این خاطر میگم که رمز نکنید که بتونید جلوتکراری بودنش رو بگیرید.
private void SaveInoUsers()
{
if (CmbBranch.Text=="")
{
errorProvider1.SetError(CmbBranch,"لطفاً کد شعبه را انتخاب کنید?");
CmbBranch.Focus();
return;
}
if (TxtName.Text == "")
{
errorProvider1.SetError(TxtName, "لطفاً نام خود را وارد فرمایید؟");
TxtName.Focus();
return;
}
if (TxtLast.Text == "")
{
errorProvider1.SetError(TxtLast, "لطفاً نام خانوادگی خود را وارد فرمایید؟");
TxtLast.Focus();
return;
}
if (TxtUser.Text == "")
{
errorProvider1.SetError(TxtUser, "لطفاً نام کاربری خود را وارد فرمایید؟");
TxtUser.Focus();
return;
}
if (TxtPass.Text == "")
{
errorProvider1.SetError(TxtPass, "لطفاً رمز عبور خود را وارد فرمایید؟");
TxtPass.Focus();
return;
}
if (TxtConfPass.Text != TxtPass.Text)
{
PersianMessageBox.Show("کلمه عبور نامعتبر می باشد", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Information);
TxtPass.Focus();
return;
}
if (PicUsers.Image == null)
{
PersianMessageBox.Show("شما تصویری کاربری خود را انتخاب نکردید؟", "تصویری رو انتخاب فرمایید",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
BtnOpenPic.Focus();
return;
}

var query11 = (from ak in dbm.Tbl_Users
where ak.UserName == TxtUser.Text
select ak);
if (query11.Any())
{
// dbm.Dispose();
MessageBox.Show("نام کاربری تکراری می باشد");
}
else
{





try
{
//try
//{
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashBytes;
UTF8Encoding encoder = new UTF8Encoding();
string strpass = TxtPass.Text;
hashBytes = md5Hasher.ComputeHash(encoder.GetBytes(strpass));
MemoryStream ms = new MemoryStream();
PicUsers.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] pic = ms.ToArray();
Tbl_Users tblUser = new Tbl_Users();
tblUser.Branch_Code = CmbBranch.Text.Trim();
tblUser.U_Sex = TxtSex.Text.Trim();
tblUser.U_Name = TxtName.Text.Trim();
tblUser.U_Last = TxtLast.Text.Trim();
tblUser.UserName = TxtUser.Text.Trim();
tblUser.U_PassWord = hashBytes;
tblUser.U_Photo = pic;
tblUser.U_Record_Time = LblTime.Text.Trim();
tblUser.U_Submission = LblDate.Text.Trim();
tblUser.U_Unit = LblUnit.Text.Trim();
tblUser.U_View_User_Registration = ChckAddUser.Checked;
tblUser.U_View_Users_Information = ChckShowUser.Checked;
dbm.AddToTbl_Users(tblUser);
dbm.SaveChanges();
dbm.Dispose();
this.Hide();
FrmLogin fm = new FrmLogin();
fm.ShowDialog();
//}
//catch (SqlException ex)
//{
// if (ex.Number == 2627)
// {
// PersianMessageBox.Show("نام کاربری تکراری می باشد");
// }

//}
}
catch (Exception exe)
{
if (!ShowFrindMessageUsers)
{
PersianMessageBox.Show(exe.Message);
}
else
{
PersianMessageBox.Show("خطا در اجرا دستورات / خطا 104", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
}
}
//tion ex)
// {
// = 2627)
// {
// ox.Show("نام کاربری تکراری می باشد");
// return;
// }
//c //n exe)
//{ //{
// essageUsers)
// PersianMessageBox.Show(exe.Message);
// // PersianMessageBox.Show("خطا در اجرا دستورات / خطا 104", "خطا", PersianMessageBox.Buttons.OK,
// ox.Icon.Error);
//} //
}
}

private void BtnSave_Click(object sender, EventArgs e)
{
SaveInoUsers();
}

این کد هم برای ورود هستش به صورت رمز. private void LoginSystem()
{

MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedDataBytes;
UTF8Encoding encoder = new UTF8Encoding();

string StrPassWord = TxtPassWord.Text;
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(StrPassWord ));

var query = db.ViewUsersInformationAndCompaniesTogether.Where( d => d.UserName == TxtUsers.Text && d.U_PassWord == hashedDataBytes);
if (TxtPassWord.Text != "" && TxtUsers.Text != "")
{
if (query.Count() != 0)
{

Program.User = TxtUsers.Text.ToString();
this.Hide();
FrmMain fm = new FrmMain();

fm.ShowDialog();
}
else
{
PersianMessageBox.Show("چنین نام کاربری یافت نشود؟", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
TxtUsers.Text = "";
TxtPassWord.Text = "";
}
}
else
{
PersianMessageBox.Show("نام کاربری یا رمز عبور را وارد فرمایید؟", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
}
}

private void BtnLogin_Click(object sender, EventArgs e)
{
LoginSystem();
}
امیدوارم کارتون این راه بندازه به زبان Linq و EF هستش موفق باشید.