PDA

View Full Version : سوال: ساخت فرم لوگین بصورت خیلی امن



vahidth
یک شنبه 03 دی 1391, 11:05 صبح
سلام
میخوام یه فرم ورود به صفحه اصلی بسازم که اصلا قابل هک نباشه
3 تا فرم ساختم یکی برای ورود اطلاعات ، یکی فرم اصلی ، و یکی برای فرم تغییر رمز ورود
1- در فرم ورود به صفحه اصلی ( دو تا تکست باکس و یه دکمه میخوام وقتی اطلاعات ورود درست بود کاربر به صفحه اصلی لوگین بشه
2-صفحه تغییر رمز ورود هم 4 تا تکست باکس گذاشتم که 2 تکست باکس اولی رمز فعلی رو وارد کنه و اگه رمزدرست بود بتونه رمز رو تغییر بده و در 2 تکست باکس دومی رمز جدید رو وارد کنه
میشه بگین در بانک چند فیلد تعریف کنم و چطوری بسازم امنیت در این برنامه خیلی مهمه فقط اینو میخوام؟

vaheeed
یک شنبه 03 دی 1391, 11:42 صبح
غیر ممکنه که غیر قابل هک باشه خیلی ها ادعا کردن غیر قابل هک هستن و به راحتی هک شدن حالا ما که جای خود داریم دیگه !!!!!
زیاد بحث شده در مورد امنیت از اینکه یوزر و پس رو داخل پروپرتیس بزاری یا تو پایگاه داده یا داخل ریجستری و یا .... ولی از نظر من که ممکنه خیلی قابل اعتماد نباشه !! بهتره یوزر و پست رو هش کنی و بعد دیگه مهم نیست کجا بزاری تو چشمم طرفم بزاری وقتی نتونه بفهمه چیه میخواد چیکار کنه !!! و هش های دستی که از الگوریتم های روز استفاده نمیکنن امنیت بیشتری دارن چون الگوریتم های روز سریع هم راه نفوذش پیدا میشه ولی روشهای من در اوردی خیلیا رو کسی نمیفهمه البته برای اونم باید یه سری روشها و دستوراتی رو بخونی یه سرچ بزنی الگوریتم های رمزنگاری مقاله زیاده

vahidth
یک شنبه 03 دی 1391, 12:34 عصر
خوب بگین چیکار میتونم بکنم چطوری بسازم

vaheeed
یک شنبه 03 دی 1391, 12:48 عصر
بوسیله ابزار قدرتمند "جستجو " :چشمک: اینجوری فکر کن که میخوای یه برنامه بنویسی که دو تا رشته ورودی داره و قراره با یه الگوریتمی هش بشه و یه تابع هم داری که دو تا رشته هش شده ورودی میگیره و دو تا رشته معمولی برمیگردونه !!!! دو تا رشته یکیش یوزر یکی هم پسورد ، اگه منظورت اینه که با کدوم الگوریتم و کد الگوریتم متاسفانه وقت نمیکنم واست پیدا کنم بهتره کمی جستجو کنی انواع الگوریتم ها و حتی با کد سی شارپشون رو میتونی پیدا کنی و از اونجا که ما فینگلیش تایپ میکنیم خیلی سخت میشه رمزها رو تو الگوریتم ها شکست اخه بعضی از هکرها برای باز شدن از فراوانی حروف در کلمه اصلی و هش شده اون استفاده میکنن ، میتونم بهت یه پیشنهاد بدم البته شاید پیشنهاد خوبی نباشه ، از توابع فوق اشوب اگه بتونی استفاده کنی خیلی قوی میشه الگوریتمت من واسه رمز کردن تصویر استفاده کردم خیلی خوب جواب داد در حدی که اگه 0.00001 کلید رو تغیر میدادی دیگه تصویر به تصویر اول تبدیل نمیشد !! شرمنده کلیات رو میگم و نمیتونم واست جزئیات رو بگم

uniqueboy_ara
یک شنبه 03 دی 1391, 12:50 عصر
همون طور که دوستمون هم گفتن غیر قابل نفوذ بودن، یه ایده آله دست نیافتنیه!
ولی یکی از امن ترین راه ها اینه که شما رمزتون رو با الگوریتم هایی مثل md5 تبدیل به یه رشته hash شده بکنی و داخل دیتابیس ذخیره کنی
وقتی هم که میخوای کاربر رو اعتبار سنجی کنی که Password صحیح رو وارد کرده یا نه، پسوورد گرفته شده از کاربر رو هم توسط همون الگوریتم Hash میکنی و با رشته hash شده قبلی مقایسه می کنی، که در صورت یکی بودن، اجازه ورود به کاربر داده میشه

vahidth
یک شنبه 03 دی 1391, 12:56 عصر
خوب داداش بگو من از کجا شروع کنم
کدها رو بزار

uniqueboy_ara
یک شنبه 03 دی 1391, 13:24 عصر
این برای hash کردن:
using (MD5 Hash = MD5.Create())
{
txtHash.Text = Hashing.GetMd5Hash(Hash, txtInput.Text);
}

اینم برای مقایسه:
using (MD5 Hash = MD5.Create())
{
if (Hashing.VerifyMd5Hash(Hash, txtVerify.Text, txtHash.Text))
{

label1.Text = "Is Same :)";
}
else
{

label1.Text = "Is not Same :(";
}
}

vahidth
یک شنبه 03 دی 1391, 14:20 عصر
داداش من یه بانک ساختم چند تا فیلد براش بزارم مبتدی هستم
کد ورود به صفحه اصلی رو هم میشه بگی

sasan_22
یک شنبه 03 دی 1391, 15:04 عصر
فعلا یه جول درست کن دوتا فیل داشته باشه تا بعد
اول چک کن ببین کار میکنه بعد برو واسه برنامه ات جدول رو بساز (جول ساختن نیاز به زمان برای بدست آورن مستندات در رابطه با برنامه ات هست) این کارو بکن تبدیل کن ذخیره کن سپس از بانکت بخون تا ........

vaheeed
یک شنبه 03 دی 1391, 15:50 عصر
این برای hash کردن:
using (MD5 Hash = MD5.Create())
{
txtHash.Text = Hashing.GetMd5Hash(Hash, txtInput.Text);
}

اینم برای مقایسه:
using (MD5 Hash = MD5.Create())
{
if (Hashing.VerifyMd5Hash(Hash, txtVerify.Text, txtHash.Text))
{

label1.Text = "Is Same :)";
}
else
{

label1.Text = "Is not Same :(";
}
}
تابع hashing که نوشتین رو نمیشناسه فکر کنم این تابعی هست که خودتون نوشتین و اینجا نزاشتین ، از یکی از فرم های همین سایت من یه تابع پیدا کردم، md5 غیرقابل بازگشت هست فقط چون خیلی معروف هست سایتهایی با دیتابیس های تقریبا قوی ایجاد شده که کد هش رو برمیگردونه البته خوب کد هش های معروف رو داره پس از کلمات فینگلیش و عجیب غریب استفاده کنین بهتره !!

vahidth
یک شنبه 03 دی 1391, 16:07 عصر
داداش من یه فیلد ساختم بنام pass از نوع integer و اونو دیتیچ کردم و به پروِه ام کپی کردم حالا چطوری کد ورود به صفحه اصلی رو بنویسم لطفا بگید با کد

SHD.NET
یک شنبه 03 دی 1391, 16:45 عصر
میتونید از کامپوننت Chilkat جهت رمزنگاری اطلاعات هم استفاده کنید

:چشمک:\\\موفق باشید///:چشمک:

uniqueboy_ara
یک شنبه 03 دی 1391, 18:32 عصر
تابع hashing که نوشتین رو نمیشناسه فکر کنم این تابعی هست که خودتون نوشتین و اینجا نزاشتین ، از یکی از فرم های همین سایت من یه تابع پیدا کردم، md5 غیرقابل بازگشت هست فقط چون خیلی معروف هست سایتهایی با دیتابیس های تقریبا قوی ایجاد شده که کد هش رو برمیگردونه البته خوب کد هش های معروف رو داره پس از کلمات فینگلیش و عجیب غریب استفاده کنین بهتره !!

شما کافیه که فقط این یه خط رو به بالای کد برنامه ت اضافه کنی!!!!!
using System.Security.Cryptography;

vahidth
یک شنبه 03 دی 1391, 20:27 عصر
داداش من بلد نیستم کد ورود به فرم اصلی رو بنویسم یکم کمکم کن فقط کد ارتباط با بانک رو نوشتم
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\bn.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

vaheeed
دوشنبه 04 دی 1391, 08:25 صبح
شما کافیه که فقط این یه خط رو به بالای کد برنامه ت اضافه کنی!!!!!
using System.Security.Cryptography;

کتابخونشو صدا زدم همون اول ولی بازم کار نکرد نمیدونم شاید جای دیگه اشتباه داشتم حالا من از یه جا دیگه در اوردم دوستمونم حتما تونسته بزنه کد رو

vahidth
دوشنبه 04 دی 1391, 08:43 صبح
داداش نیم اسپس رو هم اضافه کردم لطفا کد ورود به صفحه اصلی رو برام بنویسید
من نمیخوام به این صورت ورود رو انجام بدم من میخوام با استفاده از یک دیتابیس این کارو انجام بدم به این صورت که پسورد رو از دیتابیس بخونه و اگه درست بود به صفحه بعدی بره
private int Number = 0;
private void button1_Click(object sender, EventArgs e)
{
if (Number <= 3)
{

if (textBox1.Text == "admin" && textBox2.Text == "admin")
{
Form2 cv = new Form2();
cv.ShowDialog();
}
else
{
Number++;
MessageBox.Show("Invalid username or Password");
textBox1.Clear();
textBox2.Clear();
}
}
else if (Number == 4)
{
this.Close();

vahidth
دوشنبه 04 دی 1391, 16:23 عصر
ای بابا بگید چطوری کد ورود به صفحه اصلی رو بنویسم در ضمن من یه بانک ساختم و از تا فیلد پسورد و یوزرنیم براش ساختم و در سی شارپ به باتنک اتصال دادم حالا میخوام وقتی برنمه اجرا شد کاربر اطلاعات رو وارد کنه و برنامه با استفاده از دیتابیس به صفحه بعدی کانکت شه و اگه اطلاعات اشتباه بود ارور بده

vahidth
سه شنبه 05 دی 1391, 10:59 صبح
از دوستان کسی نمیخواد ما رو کمک کنه؟...

f.beigirad
شنبه 21 بهمن 1391, 14:37 عصر
برای رفتن به فرم بعدی:

new From2().ShowDialog(this);