PDA

View Full Version : گفتگو: قرار دادن Password براي نرم افزار و امنيت



csharpprogramer88
پنج شنبه 06 اسفند 1388, 22:05 عصر
سلام
در برنامه اي مانند يك برنامه حسابداري يا برنامه هاي ديگر اگر بخواهيم كلمه عبور تعريف كنيم بطوريكه كاربر وقتي برنامه را اجرا مي كند ابتدا يك صفحه بيايد و پس از وارد كردن رمز ، صفحه نرم افزار بيايد چيكار كنيم .آيا در يك برنامه اي كه سطح امنيتي متوسط دارد با يك برنامه اي كه سطح امنيتي بالاتري دارد اين شيوه فرق دارد .
راه حل حلي كه به نظر من مي رسيد اين است كه در اس كيو ال يك جدول براي تعريف نام كاربري و كلمه عبور بسازم و در صفحه نام كاربري يك سلكت بنويسم اگر با آن نام كاربري و كلمه عبور وجود داشت صفحه نمايش بدهد وگرنه اشتباه است .
دوستان لطف كنيد بگوييد اگر اين روش درست است آيا امنيت دارد يا نه كاملا غلط است .
خواهشا يك روش امن login را بگوييد هم براي امنيت بالا هم براي امنيت متوسط .

hamidreza20
پنج شنبه 06 اسفند 1388, 22:45 عصر
سلام دوست عزیز

البته روشی که شما گفتید درست است

ابتدا جدولی برای کاربران می سازند و اگر بخواهند کلیه فعالیت های آن ها را نیز ثبت کنند از جداول دیگری جهت ثبت تراکنش ها استفاده می کنند.

اما در مورد سوال شما ذکر یه نکته بسیار حائز اهمیت می باشد و آن اینکه :

در ذخیره اطلاعات کاربری در بانک اطلاعات از کد کردن اطلاعات استفاده می کنند تا اگر کسی توانست به بانک دسترسی پیدا کند نتواند اطلاعات آن را ملاحظه کند.

روش های کد گذاری متفاوتی در این زمینه وجود دارد که می توان به مهترین آن مثلا MD5 اشاره نمود.

ببخشید بیشتر از این به ذهنم نرسید براتون بنویسم...

التماس دعا...

nasime_shomal
جمعه 07 اسفند 1388, 02:31 صبح
سلام دوست عزیز

البته روشی که شما گفتید درست است

ابتدا جدولی برای کاربران می سازند و اگر بخواهند کلیه فعالیت های آن ها را نیز ثبت کنند از جداول دیگری جهت ثبت تراکنش ها استفاده می کنند.

اما در مورد سوال شما ذکر یه نکته بسیار حائز اهمیت می باشد و آن اینکه :

در ذخیره اطلاعات کاربری در بانک اطلاعات از کد کردن اطلاعات استفاده می کنند تا اگر کسی توانست به بانک دسترسی پیدا کند نتواند اطلاعات آن را ملاحظه کند.

روش های کد گذاری متفاوتی در این زمینه وجود دارد که می توان به مهترین آن مثلا MD5 اشاره نمود.

ببخشید بیشتر از این به ذهنم نرسید براتون بنویسم...

التماس دعا...
http://www.md5generator.com/index.php

csharpprogramer88
جمعه 07 اسفند 1388, 08:46 صبح
سلام دوست عزیز

البته روشی که شما گفتید درست است

ابتدا جدولی برای کاربران می سازند و اگر بخواهند کلیه فعالیت های آن ها را نیز ثبت کنند از جداول دیگری جهت ثبت تراکنش ها استفاده می کنند.

اما در مورد سوال شما ذکر یه نکته بسیار حائز اهمیت می باشد و آن اینکه :

در ذخیره اطلاعات کاربری در بانک اطلاعات از کد کردن اطلاعات استفاده می کنند تا اگر کسی توانست به بانک دسترسی پیدا کند نتواند اطلاعات آن را ملاحظه کند.

روش های کد گذاری متفاوتی در این زمینه وجود دارد که می توان به مهترین آن مثلا MD5 اشاره نمود.

ببخشید بیشتر از این به ذهنم نرسید براتون بنویسم...

التماس دعا...

اينكه ميشه روي خود ديتابيس پسوورد گذاشت چطوريه . آقاي hamidreza20 منظور شما فقط در جدول كاربران است كه يوزر و پس لو نرود يا نه كل اطلاعات ديتابيس

csharpprogramer88
جمعه 07 اسفند 1388, 08:48 صبح
http://www.md5generator.com/index.php


. nasime_shomal شما آدرس يه سايت راداديد كه در آن دو تكست باكس وجو د داره يكي string و يكي password ولي چون زيانم خوب نيست نتونستم خوب بهره برداري كنم ظاهر كار به اين صورته كه شما اين دو تكست باكس را پر مي كني و معادل رمز شده اونو مي گيري دوست عزيز من چطور بايد از اين رمز در برنامه استفاده كنم اگر منظور شما اينه كه من معادل رمز شده اين تكست باكس ها را بگيرم و در جدول كاربران ذخيره كنم و بعد سلكت را معادل اون قرار بدم چطور بايد اونو رمز گشايي كنم كه كاربر بتونه اسم خودشو وارد كنه.

kia1349
جمعه 07 اسفند 1388, 14:09 عصر
در بخش open source یه برنامه گذاشتم که برای ورورد به برنامه یوزر و پسورد میگیره و اونو با دیتابیس چک میکنه.برای حفظ امنیت برنامه از الگوریتم md5 در اون استفاده شده

csharpprogramer88
جمعه 07 اسفند 1388, 17:05 عصر
در بخش open source یه برنامه گذاشتم که برای ورورد به برنامه یوزر و پسورد میگیره و اونو با دیتابیس چک میکنه.برای حفظ امنیت برنامه از الگوریتم md5 در اون استفاده شده

دوست عزيز يه عنواني يه آدرسي بده خوب

Open-Source
جمعه 07 اسفند 1388, 18:14 عصر
راستی md5 بهتره یا SHA1 برای هش کردن پسورد؟؟

arta.nasiri
جمعه 07 اسفند 1388, 19:57 عصر
سلام

همین روشی که دوستان گفتند خوبه
ابتدا شما موقع ایجاد یوزر مثلا پسورد اون رو توسط MD5 کدگذاری کنید و پس از آن داخل بانک ذخیره کنید و موقع ورود کاربر هم ابتدا پسورد کدگذاری شده را از بانک بخونید و با پسوردی که کاربر وارد کرده مقایسه کنید اگه درست بود صفحه اصلی برنامه را به کاربر نشان دهید

این لینک رو هم نگاه بکن
http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

nasime_shomal
جمعه 07 اسفند 1388, 20:10 عصر
. nasime_shomal شما آدرس يه سايت راداديد كه در آن دو تكست باكس وجو د داره يكي string و يكي password ولي چون زيانم خوب نيست نتونستم خوب بهره برداري كنم ظاهر كار به اين صورته كه شما اين دو تكست باكس را پر مي كني و معادل رمز شده اونو مي گيري دوست عزيز من چطور بايد از اين رمز در برنامه استفاده كنم اگر منظور شما اينه كه من معادل رمز شده اين تكست باكس ها را بگيرم و در جدول كاربران ذخيره كنم و بعد سلكت را معادل اون قرار بدم چطور بايد اونو رمز گشايي كنم كه كاربر بتونه اسم خودشو وارد كنه.
دوست عزیز اون سایت رو دادم تا درک بهتری ار md5 داشته باشی یه مقاله توی همین فروم برنامه نویس هست که بدردت می خوره http://www.barnamenevis.org/forum/showthread.php?t=10025
بهش سر بزن نتیجه میگیری. کد md5 رو تو اینترنت پیدا کن و قبل از اینکه پسورد های خودتو بریزی تو دیتابیس با این الگوریتم رمزشون کن

nasime_shomal
جمعه 07 اسفند 1388, 20:11 عصر
اینم نمونه کدی که من براتون توی همین فروم پیدا کردم
http://www.barnamenevis.org/forum/showthread.php?t=95001&page=14

kia1349
جمعه 07 اسفند 1388, 20:13 عصر
دوست عزيز يه عنواني يه آدرسي بده خوب

http://barnamenevis.org/forum/showpost.php?p=893486&postcount=9

nasime_shomal
جمعه 07 اسفند 1388, 20:34 عصر
دیگه از این آماده تر نمیتونم بزارم. این کد یک login هست که براتون نوشتم. با توجه به دوتا پست قبلیم اینو بخونید حتما متوجه میشوید اگر بازم مشکلی بود بگید

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Security.Cryptography;

namespace loginTest
{
public partial class Form2 : Form
{
SqlConnection connForm2;

private string encryptString(string strToEncrypt)
{
UTF8Encoding ue = new UTF8Encoding();
byte[] bytes = ue.GetBytes(strToEncrypt);

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] hashBytes = md5.ComputeHash(bytes);

// Bytes to string
return System.Text.RegularExpressions.Regex.Replace
(BitConverter.ToString(hashBytes), "-", "").ToLower();
}
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
connForm2 = new SqlConnection("user id = mohammad;" + "password=123;server = localhost\\sqlexpress;" +
"trusted_connection=yes;" + "database=dbLoginTest;" + "connection timeout=30");
connForm2.Open();

}

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
connForm2.Close();
}

private void buttonSubmit_Click(object sender, EventArgs e)
{
string enc = encryptString(textBoxPassword.Text);
SqlCommand scForm2 = new SqlCommand("insert into TableLoginTest values (\'" +
textBoxUserName.Text + "\',\'"+enc+"\')", connForm2);
scForm2.ExecuteNonQuery();
textBoxPassword.Text = null;
textBoxUserName.Text = null;
}
}
}

csharpprogramer88
شنبه 08 اسفند 1388, 09:06 صبح
جناب اين چيزهايي كه شما گفتيد ظاهرا فقط براي پسوورده . من رو سيستمي نرم افزار را نصب كردم و بانكش را هم اتچ حالا شما بگيد اگه يكي يه كمي از كار با محيط اس كيو ال سرور بدونه به راحتي مي تونه از محيط بانك اطلاعات را backup بگيره و ببره رو سيستم خودش واز اون استفاده بكنه ، چطوري بايد از اين كار جلوگيري كنم
البته براي پسوورد هم خيلي به كار من مياد كه بايد چيزهايي را كه دوستان گفتند جستجو كنم