PDA

View Full Version : محل ذخیره Password



Mohammad_Mnt
پنج شنبه 11 خرداد 1385, 22:11 عصر
برنامه ای نوشته ام که حداکثر 255 یوزر می تونه داشته باشه . روی ویندوز کار می کنه و زیر شبکه است . هر یوزر می تونه رمز خودش رو تغییر بده . من این رمز ها رو hash می کنم و توی یه table ذخیره می کنم که دو فیلد داره : userID,userPassword
ولی اگه یه کاربر بیاد رمز hash شده ی خودش رو توی رکوردهای یوزرهای دیگه کپی کنه ، رمز خودش جایگزین اون می شه .
راه حل حفاظت برنامه در این مورد چیه ؟
ممنون

joker
پنج شنبه 11 خرداد 1385, 23:21 عصر
میتونی hash بدست اومده را یکبار هم با نام کاربری کد کنی ... اینطوری هر hash فقط با یک کد کاربری سازگاره

ولی ....برنامه ای که کاربرش بتونه به دیتابیس بقیه دسترسی داشته باشه که ....... :تشویق::تشویق:

Mohammad_Mnt
پنج شنبه 11 خرداد 1385, 23:24 عصر
روش جالبی بود :) روش دیگه ؟
راستی ، من از MSSQL استفاده می کنم . برای همین کاربری که admin باشه می تونه به دیتابیس دسترسی داشته باشه . روی خود دیتابیس هم نمی شه رمز گذاشت . بنابراین راهی نمی شناسم که از دسترسی کاربر جلوگیری کنم :)

houtanal
پنج شنبه 11 خرداد 1385, 23:48 عصر
چرا اصلا یه یوزر دیگه باید بتونه مقادیر جدول رو دستکاری کنه؟

ali_sorouri2005
جمعه 12 خرداد 1385, 19:38 عصر
سلام
houtanal درست میگه شما اصلا نباید بزارین کاربران به بان دستزسی مستقیم داشته باشند !

Mohammad_Mnt
شنبه 13 خرداد 1385, 09:59 صبح
من نمی ذارم ! خودش می ره :) وقتی یه کاربر administrator ویندوز باشه ، می تونه به تمام دیتابیس های mssql دسترسی داشته باشه
راهی برای جلوگیری از دسترسی این کاربر هست ؟

hr110
یک شنبه 14 خرداد 1385, 19:33 عصر
چند راه حل وجود داره که یکی از روشهای متداول به این شرح است:
1- حذف کاربر administrator از لیست کاربران SQL
2- تعریف یک کلمه عبور با مشخصات "کلمه عبور واقعی"
3- برای هر یک از کاربران نرم افزارت یک کاربر که میتونه نامش hash شده باشه در SQL ایجاد کن و از اون برای اتصال به SQL استفاده کن
4- به قول جناب اینپرایز: دستات رو بزار روی دیوار و توکلت به خدا باشه

Mohammad_Mnt
دوشنبه 15 خرداد 1385, 20:13 عصر
1 ) اگه admin ویندوز sql Server رو متوقف کرد و دیتابیس رو جای دیگه attach کرد چی ؟
2 ) منظورتون رو متوجه نشدم !
3 ) یعنی user توی sql ? خوب این چه فایده ای داره ؟
4 ) من هنوز به اون کوچه بن بسته نرسیده ام :)

hr110
دوشنبه 15 خرداد 1385, 22:32 عصر
1- در مسائل امنیتی/حفاظتی اولین مسئله امنیت فیزیکی میباشد :: هر کسی قرار نیست به سرور دسترسی داشته باشه
2- "کلمه عبور واقعی" نیازی به توضیح نداره، مثلا نباید از شماره شناسنامه یا تکرار سال تولد برای کلمه عبور استفاده کرد.
3- اگر سیستم رو درست پیاده کرده باشی هر کاربری تنها به جداول، ویوها و ... خودش دسترسی داره . با تغییر کلمه عبور در نرم افزار شما کاربر SQL هم تغییر میکنه و موارد متعدد دیگر که حال نوشتنشو ندارم :چشمک:
4- اگه رسیده التماس دعا داریم :قلب:

Mohammad_Mnt
سه شنبه 16 خرداد 1385, 19:04 عصر
آقای ربیعی ! برنامه ی من ویندوز اپلیکیشن است و مشتری خودش روی سیستمش نصب می کنه

hr110
سه شنبه 16 خرداد 1385, 22:10 عصر
فرقی نمیکنه، برخی از موارد را باید شما در نرم افزار پیاده کنی و بخش دیگر مربوط به کاربر میشود، خب اگر کاربر نیاز دارد امنیت را به درجه بالاتری ارتقاء دهد همین موارد که عرض شد را مستند کنید تا کاربر شما با رعایت آنها به نتیجه خود برسد.

Mohammad_Mnt
چهارشنبه 17 خرداد 1385, 11:19 صبح
برادر دل انگیز :) مشکل من با همین کاربر هاست . فرض کن دو کاربر از این برنامه استفاده می کنند . من می خوام هر کدوم نتونن با رمز دیگری وارد بشن یا بتونن اطلاعات را با اسم کاربر دیگه تغییر بدن :)

مرتضی دولتخواه
سه شنبه 16 آبان 1385, 12:55 عصر
با سلام
به نظر من در این مورد شما، شما اگر از Encode کردن داده ها استفاده کنید خیلی بهینه تر ای Hash کردن انهاست چون شما همون طور که دادهاتون رو Encode می کنید می تونید اونها رو هم برای صحت اعتبار مجددا Decode کنید (منظورم روشی قابل برگشت به داده اصلی که اون روش رو هم فقط شمای برنامه نویس می دونه) .
والبته در بدترین حالت هم اگه روش شما برای Encode کردن لو بره خود اینکه دیگه قصه نداره با یک روشه دیگه.
پس هیشه راهی هست. اون هم با این همه دوستانی که تو این فروم واقعا لطفشون رو از کسی دریغ نمی کنن.

مرتضی دولتخواه
سه شنبه 16 آبان 1385, 13:00 عصر
البته این رو هم اضافه کنم که فکرت رو مشغول اینکه پردازش می گیره و اوردر زمانیش مناسب نیست و ... نباشت، چون بحث امنیت در میانه حالا اگه یکم هم از منبع سیستم همچین درست و حسابی کار کشیدی (البته تمام اینها در کسری از ثانیه ست) اشکالی نداره .

mohdhassan
پنج شنبه 16 آذر 1385, 23:05 عصر
با عرض سلام محمد
لطفا میتونی یه برنامه کوچک حسابداری رو برام طراحی کنی
با کمال تشکر

Mohammad_Mnt
شنبه 18 آذر 1385, 16:14 عصر
شرمنده! اصلا" فرصت ندارم :(

titbasoft
شنبه 18 آذر 1385, 16:39 عصر
میتونی hash بدست اومده را یکبار هم با نام کاربری کد کنی ... اینطوری هر hash فقط با یک کد کاربری سازگاره
مشکل این روش چیه؟

Mohammad_Mnt
یک شنبه 19 آذر 1385, 10:59 صبح
مشکلی نداشت. گفتم شاید روش قوی تری هم وجود داشته باشد!

alireza safian
دوشنبه 23 آبان 1390, 20:22 عصر
من می خواستم ببینم چه شکلی میشه فیلد پسورد در sql و توسط خود sql به صورت رمز شده و یا هش شده کرد

omidh2007
دوشنبه 23 آبان 1390, 23:50 عصر
توسط خود SQL رو اطلاعی ندارم . ولی توسط خود #C میشه با این تابع Hash رو بدست آورد .

public static string GetMD5Hash(string input)
{
System.Security.Cryptography.MD5CryptoServiceProvi der x = new System.Security.Cryptography.MD5CryptoServiceProvi der();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
string password = s.ToString();
return password;
}