PDA

View Full Version : مخفی کردن رمز عبور متصل شدن به sql server



babak23
شنبه 03 آذر 1386, 12:03 عصر
برای امن نگه داشتن رمز عبور و نام کاربری که از طریق آن به بانکی که داخل sql server هست کانکت میشویم چه راه هایی پیشنهاد میکنید؟

1 من ابتدا رمز عبور و نام کاربری را در setting برنامه ذخیره میکردم متاسفانه این مورد دارای امنیت لازم نبود و به راحتی میشد به رمز عبور و نام کاربری دسترسی داشت و هر کسی با داشتن رمز عبور و نام کاربری میتونست به sql server کانکت شود و هر کاری هم که میخواست میتونست انجام بده.

2 کار دومی که من انجام دادم این بود که رمز عبور را در داخل برنامه ذخیره کردم به این نحو دیگه رمز عبور را نمیشه بدست اورد مگه اینکه به کد برنامه دسترسی داشت که حلا نمیدونم که آیا دات نت میتونه از کدها محافظت کنه یا نه ؟ یعنی بدست آوردن کدهای که با دات نت نشته شده راحت هست یا مشکل؟

3 راه سومی که به نظرم رسیده اینه که رمز عبور و نام کاربری را در فایلی ذخیره کنم البته از الگوریتم های رمز نگاری هم استفاده کنم؟

البته هنورز از این روش استفاده نکردم اما فکر کنم که هر چه زودتر باید این روش را بکار ببرم
البته اگه میشد که به نوعی کاری کرد که کاربران نتوند به اطلاعات setting برنامه دسترسی داشته باشند روش اول میتونست روش خوبی باشه.

به نظر شما بهترین شیوه بری برای امن نگهداشتن رمز عبور و نام کاربری که با اینها برنامه به sql server کانکت میشود چی هست؟
کسی نمیدونه چجوری از خوانده شدن اطلاعات داخل setting برنامه جلوگیری کنم؟:ناراحت:

hassan razavi
شنبه 03 آذر 1386, 12:51 عصر
به نظر من بهترین روش استفاده از الگوریتمهای رمزنگاری و ذخیره کردن اطلاعات در فایل Setting هست. البته در رجیستری هم می تونید ذخیره کنید.

ir_programmer
شنبه 03 آذر 1386, 13:08 عصر
بهترین راه در حال حاضر استفاده از روش رمزنگاری Hash هست.

MohammadSoft
شنبه 03 آذر 1386, 13:17 عصر
سلام
اگر معتقدید که نگه داری در Setting کار مناسبی است ( که من هم با شما موافقم ) در آنجا ذخیره کنید ولی نه خود اطلاعات رو بلکه رمز شده آنها رو .
به همین راحتی .

m_namjoo
شنبه 03 آذر 1386, 15:36 عصر
برای امن نگه داشتن رمز عبور و نام کاربری که از طریق آن به بانکی که داخل sql server هست کانکت میشویم چه راه هایی پیشنهاد میکنید؟

1 من ابتدا رمز عبور و نام کاربری را در setting برنامه ذخیره میکردم متاسفانه این مورد دارای امنیت لازم نبود و به راحتی میشد به رمز عبور و نام کاربری دسترسی داشت و هر کسی با داشتن رمز عبور و نام کاربری میتونست به sql server کانکت شود و هر کاری هم که میخواست میتونست انجام بده.

2 کار دومی که من انجام دادم این بود که رمز عبور را در داخل برنامه ذخیره کردم به این نحو دیگه رمز عبور را نمیشه بدست اورد مگه اینکه به کد برنامه دسترسی داشت که حلا نمیدونم که آیا دات نت میتونه از کدها محافظت کنه یا نه ؟ یعنی بدست آوردن کدهای که با دات نت نشته شده راحت هست یا مشکل؟

3 راه سومی که به نظرم رسیده اینه که رمز عبور و نام کاربری را در فایلی ذخیره کنم البته از الگوریتم های رمز نگاری هم استفاده کنم؟

البته هنورز از این روش استفاده نکردم اما فکر کنم که هر چه زودتر باید این روش را بکار ببرم
البته اگه میشد که به نوعی کاری کرد که کاربران نتوند به اطلاعات setting برنامه دسترسی داشته باشند روش اول میتونست روش خوبی باشه.

به نظر شما بهترین شیوه بری برای امن نگهداشتن رمز عبور و نام کاربری که با اینها برنامه به sql server کانکت میشود چی هست؟
کسی نمیدونه چجوری از خوانده شدن اطلاعات داخل setting برنامه جلوگیری کنم؟:ناراحت:
ابتدا درون sql جدولی طراحی کن که دو فیلد user nameو password داشته باشد بعد نوع پسورد از نوع باینری تعریف حال درون برنامه از hashدات نت استفاده کن و اطلاعات درون بانک قرار بده و هنگام اعتبار سنجی کاربری که به سایت وارد می شود عکس عمل فوق استفاده کن

Mrs.Net
شنبه 03 آذر 1386, 20:00 عصر
من ابتدا رمز عبور و نام کاربری را در setting برنامه ذخیره میکردم متاسفانه این مورد دارای امنیت لازم نبود و به راحتی میشد به رمز عبور و نام کاربری دسترسی داشت چجوری میشه setting برنامه از روی exe خوند؟ منم داخل setting ثبت میکردم

sinpin
شنبه 03 آذر 1386, 20:23 عصر
بهترین راه در حال حاضر استفاده از روش رمزنگاری Hash هست.
و یا بعبارت دیگه یک الگوریتم رمزنگاری یکطرفه (غیرقابل بازگشت) است
http://en.wikipedia.org/wiki/Cryptographic_hash_function

mohammad272005
یک شنبه 04 آذر 1386, 06:07 صبح
در Web/App.config:

// Open the Web.config file.
Configuration config = WebConfigurationManager.
OpenWebConfiguration("~");
// Get the connectionStrings section.
ConnectionStringsSection section =
config.GetSection("connectionStrings")
as ConnectionStringsSection;
// Toggle encryption.
if (section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
}
else
{
section.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
}

// Save changes to the Web.config file.
config.Save();

hassan razavi
یک شنبه 04 آذر 1386, 07:39 صبح
من یک مقاله برای استفاده از Setting گذاشتم
http://barnamenevis.org/forum/showthread.php?t=82746&highlight=%D9%85%D9%82%D8%A7%D9%84%D9%87

MH2538
یک شنبه 04 آذر 1386, 07:42 صبح
سلام
دوستانی که Hash کردن رو پیشنهاد دادند . دو تانکته رو هم باید در نظر داشته باشند
1- بهم‌ریختن پسورد (و در کل هر اطلاعات مهم دیگه‌ای) زمانی ارزشمنده و از قابلیت اطمینان بالا برخورداره که یکطرفه باشه . یعنی نشه از روی اون کد بهم ریخته اصل اطلاعات رو بدست اورد
2- اگر از روشی که اطلاعات رو کاملاً بهم می‌ریزه استفاده کنید اونوقت چطور می‌خواهید رمز عبور رو به کانکشن استرینگ بدید.

ir_programmer
یک شنبه 04 آذر 1386, 08:33 صبح
سلام
دوستانی که Hash کردن رو پیشنهاد دادند . دو تانکته رو هم باید در نظر داشته باشند
1- بهم‌ریختن پسورد (و در کل هر اطلاعات مهم دیگه‌ای) زمانی ارزشمنده و از قابلیت اطمینان بالا برخورداره که یکطرفه باشه . یعنی نشه از روی اون کد بهم ریخته اصل اطلاعات رو بدست اورد
2- اگر از روشی که اطلاعات رو کاملاً بهم می‌ریزه استفاده کنید اونوقت چطور می‌خواهید رمز عبور رو به کانکشن استرینگ بدید.

از الگویتم هایی مثل RSA استفاده کنید!

babak23
یک شنبه 04 آذر 1386, 09:10 صبح
از الگویتم هایی مثل RSA استفاده کنید!

آیا خود شما تابه حال از این الگوریتم RSA استفاده کرده اید؟
در صورت استفاده این الگوریتم میتونیید با یک مثال و یا کد روش استفاده از این الگوریتم را توضیح دهیید.

sinpin
یک شنبه 04 آذر 1386, 09:14 صبح
سلام
دوستانی که Hash کردن رو پیشنهاد دادند . دو تانکته رو هم باید در نظر داشته باشند
1- بهم‌ریختن پسورد (و در کل هر اطلاعات مهم دیگه‌ای) زمانی ارزشمنده و از قابلیت اطمینان بالا برخورداره که یکطرفه باشه . یعنی نشه از روی اون کد بهم ریخته اصل اطلاعات رو بدست اورد

توابع درهم یا hash function ها، بصورت ضمنی - و طبق تعریف - توابعی یکطرفه و غیرقابل بازگشت هستند.


A well designed cryptographic hash function is a "one-way" operation: there is no practical way to calculate a particular data input that will result in a desired hash value, so it is also very difficult to forge (http://en.wikipedia.org/wiki/Forgery)

منبع : http://en.wikipedia.org/wiki/Hash_function

babak23
یک شنبه 04 آذر 1386, 09:30 صبح
چجوری میشه setting برنامه از روی exe خوند؟ منم داخل setting ثبت میکردم

هنگام نصب برنامه در مسیر نصب فایلی با فرمت xml و هم نام برنامه شما در مسیر نصب قرار میگیرد
که محتوییات آن اطلاعات قسمت setting برنامه شما می باشدفرض کنید
اسم برنامه شما MOJAVEZ باشد هنگام نصب این برنامه در مسیر نصب فایل MOJAVEZ.exe که دارای فرمت xml هست در مسیر نصب قرار میگیرد که به راحتی میتوان به اطلاعت این فایل دسترسی داشت ( با باز کردن این فایل با نرم افزار هایwordpad , Notepad , .. )
معمولا در داخل این فایل اطلاعات کانکت شدن به دیتابیس و موارد دیگر ذخیره میشود که اطلاعات کانکت شدن به دیتابیس شامل نام کاربری و رمز عبور و نام دیتابسی و .. هست . با ذخیره این اطلاعات در setting برنامه دیگه مجبور نیستیم که برای تغییر این موارد کد برنامه را دستکاری کنیم
و در صورت تغییر سرور و دیتابیس و موارد دیگر به جای اینکه در برنامه این تغییرات را اعمال کنییم که کاری هست مشکل و نسنجیده میتوانیم با ذخیره این اطلاعات در setting و تغییر
محتوای setting در خارج از برنامه ( در این مثال فایل MOJAVEZ.exe ) این کار را انجام دهیم
اما امنیت این اطلاعات در خطر می افتد که برای غلبه براین مشکل هم باید ابتدا از الگوریتم های رمز نگاری استفاده کنییم

babak23
یک شنبه 04 آذر 1386, 09:57 صبح
از دوستان تقاضا میکنم که تجربه های خود را این زمینه در اختیار بگذارند بعضی از مطالب حالت تئوری داره و ممکنه هست که در نزد برخی ها به مرحله پیاده سازی هم نرسیده باشه
مثلا روش hash , الگوریتم RSA و مواد دیگه ...
تا اینجای بحث من به این نتیجه رسیدم که اطلاعات کانکت شدن به سرور را در setting برنامه ذخیره کنم با شرط رمز کردن این اطلاعت
خوب دوستان آیا کسی کد یا الگوریتم رمز کردن اطلاعات با قابلیت رمز گشایی را داره یا از موردی که گفته شد استفاده میکنه؟
در صورت امکان با یک مثال ساده (در حد آشنای ) که چه طور اطلاعات را رمز کنم و در setting ذخیره کنم و بعد آن را دیکد کنم.و در انتها بتوانم محتویات setting را در خارج از برنامه تغییر بدم با علم به این که این اطلاعات در داخل برنامه باید دیکد شوند

babak23
یک شنبه 04 آذر 1386, 10:10 صبح
سلام
اگر معتقدید که نگه داری در Setting کار مناسبی است ( که من هم با شما موافقم ) در آنجا ذخیره کنید ولی نه خود اطلاعات رو بلکه رمز شده آنها رو .
به همین راحتی .


به نظر من بهترین روش استفاده از الگوریتمهای رمزنگاری و ذخیره کردن اطلاعات در فایل Setting هست. البته در رجیستری هم می تونید ذخیره کنید.

شما از چه الگوریتمی برای رمز کردن موارد مربوط به setting استفاده میکنید؟در صورت استفاده این مورد در برنامه های خود آیا میتونید بایک مثال این مطلب را بیان کنید.

ir_programmer
یک شنبه 04 آذر 1386, 10:14 صبح
آیا خود شما تابه حال از این الگوریتم RSA استفاده کرده اید؟
در صورت استفاده این الگوریتم میتونیید با یک مثال و یا کد روش استفاده از این الگوریتم را توضیح دهیید.

http://barnamenevis.org/forum/showthread.php?t=84283

ir_programmer
یک شنبه 04 آذر 1386, 10:17 صبح
اینم مثال:
http://barnamenevis.org/forum/attachment.php?attachmentid=12387&d=1195620837

hassan razavi
یک شنبه 04 آذر 1386, 10:22 صبح
من خودم یه الگوریتم نوشتم. البته اصلا Secur نیست ولی برای خیلی جاها بدردم میخوره. البته به شرطی که طرف حسابم خیلی باهوش و فضول نباشه .
من یک رشته رو میکیرم بعد روی تک تک کاراکترهاش یه عملیات ریاضی انجام میدم.
مثلا مهای 35 میکنم همه رو . و برای بازخوانی برعکس میکنم.

babak23
یک شنبه 04 آذر 1386, 11:07 صبح
اینم مثال:
http://barnamenevis.org/forum/attachment.php?attachmentid=12387&d=1195620837
در این مثال از یک فایل Crypto.vb استفاده شده آیا مشابه این فایل به زبان سی شارپ را هم در اختیار دارید؟ یا آیا میشه همین فایل را به سی شارپ تبدیل کرد؟

ir_programmer
یک شنبه 04 آذر 1386, 12:06 عصر
اینم سایت تبدیل VB به C#:
http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx
من همیشه با این سایت کدام رو تبدیل میکنم!

Alireza Orumand
یک شنبه 04 آذر 1386, 17:26 عصر
سلام

برای امن نگه داشتن رمز عبور و نام کاربری که از طریق آن به بانکی که داخل sql server هست کانکت میشویم چه راه هایی پیشنهاد میکنید؟

برای این کار من اول میرم تو دیتابیسم user هایی که دلم میخاد میسازم و افراد میاد و پسورد های خودشون رو وارن میکنن. بعد وقتی کسی خواست از برنامه من استفاده کنه صفحه log in رو بهش نشون میدم و میگم حالا بگو تو کی هستی و پسوردت چیه. اونم میگه بعد با اطلاعاتی که داده سعی میکنم به سرور وصل بشم اگر قبلا user داشته باشه که هیچ اگر هم نداشته باشه که دو حالت داره یا کاربره مجازه یا غیر مجاز. اگر مجاز باشه میاد پیش جناب admin و خواهش میکنه که یه user برای اون ایجاد کنه و اگر هم غیر مجاز باشه که سعی میکنه که user و pass رو از برنامه به دست بیاره ولی بعد از مدتی تلاش هیچ چیزی گیرش نمیاد چون اصلا ما هیچ چیزی تو برنامه ندارم حتی یه تابع کوچولو و زحمت حفاظت از کاربران برنامه هم به عهده ی سرور میوفته و چون نگهداری به صورت مرکزی انجام میشه امنیت بالاتری داره در ضمن اینکه بالاخری تولید کنندگان sql server یه کوچولو تجربه بیشتری تو تولید و حفاظت از user ها داردن.
اگر هم فکر میکنید برنامه چند جا قراره نصب بشه و اینطوری زحمت کار بیشتر میشه باید بگم اینطوری نیست چون در هر صورت کسی به عنوان admin باید باشه که بتونه به دیگران اجازه ساخت user رو بده که در این صورت میشه برای این کار از admin خود سرور استفاده کرد. اگر هم هر کسی قراره بتونه رو برنامه user بسازه که دیگه هیچ اصلا وجودش معنی نداره.
کلام آخر: امکانات رو برای استفاده گذاشتن و قاعدتا امکاناتی که با تجربه تر ها درست میکنن معمولا قابل اطمینان تر هست. user های sql هم برای همین کار هستن یعنی وقتی که ما برای برنام خودمون که از sql استفاده میکنیم نیاز به تعیین حق دسترسی داشته باشیم با این کار دیگه درد سر بررسی انواع روش های رمزگذاری داده و روش های پیاده سازی هم نداریم.
زحمت کمتر، امنیت بالاتر.:چشمک::بامزه:
موفق باشید.

Mrs.Net
یک شنبه 04 آذر 1386, 19:52 عصر
ببخشید!
وقتی بانک شما با یک سرور دیگه به راحتی و بدون نیاز به یوزر پسورد باز میشه چرا اینقدر سخت میگیرید؟!( مگه اینکه اشتباه فهمیده باشم)

Alireza Orumand
یک شنبه 04 آذر 1386, 20:54 عصر
وقتی بانک شما با یک سرور دیگه به راحتی و بدون نیاز به یوزر پسورد باز میشه چرا اینقدر سخت میگیرید؟!
سلام
user در سطح دیتابیس ساخته میشه و نه در سطح سرور.
در مجموع تحت هر شرایطی از بین بردن امنیت قابل تصور هست ولی خوب برای از بین بردن بعضی امنیت ها شرایط خیلی سخته مثلا برای کاری که شما فرمودید باید یه نفر بیاد بشینه پشت سرور ما. اول باید دیتابیس مارو detachبکنه بعد به وسیله ی یه حافظه قابل حمل فایل ما رو کپی کنه که اگر سیستم رایتر نداشته باشه و usb هاش هم بسته باشه غلبه به این مشکلات رو هم باید بهش اضافه کرد.
موفق باشید.

babak23
دوشنبه 05 آذر 1386, 10:12 صبح
سلام
بلاخره پس از تحقیق و مطالعه نظرات بچه ها من به این نتیجه رسیدم که Encrypt/Decrypt اطلاعات مهم میتونه خیلی سود مند باشه.در این مورد هر یک از بچه ها روش ها ی را مد نظر داشتند که در نوع خودش جالب بود .با توجه به اینکه اطلاعاتی که من در setting برنامه ذخیره میکردم و بسیار حیاتی بود و چه بسا دسترسی به این اطلاعت میتونست خرابکاری های جبران ناپذیری را به اطلاعات سازمان و داده ها وارد کنه به این فکر افتادم که قسمتی از اطلاعات مهم را به صورت رمز شده در بیارم.
من از لینک زیر برای رمز کردن رمز عبور و نام کاربری اتصال به سرور استفاده کردم
http://www.codeproject.com/useritems/Encrypt_Decrypt_File_Data.asp

اما در مورد این لینک:این لینک شامل برنامه ای هست که میتونه اطلاعات یک متن یا یک فایل را Encrypt/Decrypt ( رمز کردن/رمز گشایی )کنه. به عنوان مثال شما رشته "ALI" را می خواهید رمز کنید این رشته را در قسمت تکست مورد نظر مینویسید و علاوه بر این رشته نیاز به یک Secret key دارید که فرض کنید 828 باشه وقتی متن را با این کلید رمز میکنید خروجی به شکل cBhT6j7/C7dWGdrrFg4Wzg== در می آید . مشاهده میکنید که طول متن رمز شده کوتاه هست ( برای من مزیت میباشد! ) و با توجه به کلید هم میتوان گفت که از این نوع رمز نگاری از امنیت نسبی خوبی ( در حد ابتدایی نه حرفه ای ) برخوردار هست و باعث میشه که اگر کسی بخواد به اطلاعات دسترسی داشته باشه برای بدست اوردن اطلاعات و یا نفوذ به برنامه به زحمت بیفته.به نظر من برای شروع میتونه خوب باشه و از روش های ابتدای روتیت حروف و جابجایی مفید و کاراتر هست.برای استفاده از این روش ابتدا به لینک بالا رجوع کنید و سپس پس از دانلود سورس برنامه فایل EncryptDecrypt.cs که در این برنامه استفاده شده را به برنامه یا برنامه های که میخواید از این روش استفاده کنید اضافه کنید و لازم به ذکر هست که هنگام اضافه کردن این فایل به برنامه خود
namespace EncryptDecrypt باید به " نام برنامه" namespace تغییر کند.

پس از اضافه کردن این فایل به برنام خود حال میتونید از این روش استفاده کنید.

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



privatevoid LoginToServer()
{
string pass = "";
string UserName = "";
try
{
MOJAVEZ.MyEncryptor enc = new MOJAVEZ.MyEncryptor("282");
pass = enc.Decrypt(MOJAVEZ.Properties.Settings.Default.Pa ssWord);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
MOJAVEZ.MyEncryptor enc = new MOJAVEZ.MyEncryptor("828");
UserName = enc.Decrypt(MOJAVEZ.Properties.Settings.Default.Us erName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
string ConnectionString = "";
ConnectionString = "Data Source=" + MOJAVEZ.Properties.Settings.Default.DataSource + ";Initial Catalog=" + MOJAVEZ.Properties.Settings.Default.DataBase + ";User Id=" + UserName + ";Password=" + pass + ";";
objConnection = newSqlConnection(ConnectionString);

}


و این هم محتویات setting و config برنامه هست




<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroupname="userSettings"type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<sectionname="MOJAVEZ.Properties.Settings"type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"allowExeDefinition="MachineToLocalUser"requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<MOJAVEZ.Properties.Settings>
<settingname="moji"serializeAs="String">
<value>False</value>
</setting>
<settingname="nfp_admin"serializeAs="String">
<value>----------</value>
</setting>
<settingname="control"serializeAs="String">
<value>1234</value>
</setting>
<settingname="date"serializeAs="String">
<value />
</setting>
<settingname="nfp_masuol"serializeAs="String">
<value>----------</value>
</setting>
<settingname="nfp_sarshift"serializeAs="String">
<value>----------</value>
</setting>
<settingname="nfp_modir"serializeAs="String">
<value>----------</value>
</setting>
<settingname="DataSource"serializeAs="String">
<value>sql_server</value>
</setting>
<settingname="DataBase"serializeAs="String">
<value>mojavez</value>
</setting>
<settingname="UserName"serializeAs="String">
<value>SNBEJcZpF58RJuJYJTLPew==</value>
</setting>
<settingname="PassWord"serializeAs="String">
<value>/n/OGVgdHHr1faoyoC3Auw==</value>
</setting>
</MOJAVEZ.Properties.Settings>
</userSettings>
</configuration>

همانطور که مشاهده میکنید قسمتی از اطلاعات ( که برای من مهم تلقی میشود ) به صورت رمز شده در آمده
که در داخل برنامه رمز گشایی میشودخوب حال با توجه به این مطالب شما میتونید بگید
که من از چه username , password برای کانکت شدن به سرور استفاده میکنم!!!؟:لبخند:

babak23
دوشنبه 05 آذر 1386, 11:01 صبح
سلام

برای این کار من اول میرم تو دیتابیسم user هایی که دلم میخاد میسازم و افراد میاد و پسورد های خودشون رو وارن میکنن. بعد وقتی کسی خواست از برنامه من استفاده کنه صفحه log in رو بهش نشون میدم و میگم حالا بگو تو کی هستی و پسوردت چیه. اونم میگه بعد با اطلاعاتی که داده سعی میکنم به سرور وصل بشم اگر قبلا user داشته باشه که هیچ اگر هم نداشته باشه که دو حالت داره یا کاربره مجازه یا غیر مجاز. اگر مجاز باشه میاد پیش جناب admin و خواهش میکنه که یه user برای اون ایجاد کنه و اگر هم غیر مجاز باشه که سعی میکنه که user و pass رو از برنامه به دست بیاره ولی بعد از مدتی تلاش هیچ چیزی گیرش نمیاد چون اصلا ما هیچ چیزی تو برنامه ندارم حتی یه تابع کوچولو و زحمت حفاظت از کاربران برنامه هم به عهده ی سرور میوفته و چون نگهداری به صورت مرکزی انجام میشه امنیت بالاتری داره در ضمن اینکه بالاخری تولید کنندگان sql server یه کوچولو تجربه بیشتری تو تولید و حفاظت از user ها داردن.
اگر هم فکر میکنید برنامه چند جا قراره نصب بشه و اینطوری زحمت کار بیشتر میشه باید بگم اینطوری نیست چون در هر صورت کسی به عنوان admin باید باشه که بتونه به دیگران اجازه ساخت user رو بده که در این صورت میشه برای این کار از admin خود سرور استفاده کرد. اگر هم هر کسی قراره بتونه رو برنامه user بسازه که دیگه هیچ اصلا وجودش معنی نداره.
کلام آخر: امکانات رو برای استفاده گذاشتن و قاعدتا امکاناتی که با تجربه تر ها درست میکنن معمولا قابل اطمینان تر هست. user های sql هم برای همین کار هستن یعنی وقتی که ما برای برنام خودمون که از sql استفاده میکنیم نیاز به تعیین حق دسترسی داشته باشیم با این کار دیگه درد سر بررسی انواع روش های رمزگذاری داده و روش های پیاده سازی هم نداریمزحمت کمتر، امنیت بالاتر.:چشمک::بامزه:
موفق باشید.

این مورد روش خوبی هست اما وقتی تعداد افرادی که میخواهند از این برنامه استفاده کنند زیاد باشه چی؟ ما باید به ازای هر فردی که میخواهد از این برنامه استفاده کنه در سرور یک یوزنیم و رمز عبور برای اون شخص در نظر بگیریم که با زیاد شدن این افراد مدیریت یوزنیم و رمز عبور و نوع دسترسی تقریبا مشکل و پیچیده خواهد شد
در روش قبلی ما یک یوزنیم و رمز عبور داشتیم که افراد با آن به سرور کانکت میشدند و تنها مشکل ( مهم ترین مشکل ) این بود که باید اطلاعات کانکت شدن به سرور را امن نگه داریم که در این زمینه الگوریتم های رمز نگاری میتونه مفید باشه اما در هر صورت باز هم این روش نمیتونه صد در صد مفید واقع بشه چون با نفوذ در برنامه و پیدا کردن نوع الگوریتم میشه که به اطلاعات دسترسی داشت.البته اگه به نوعی میشد از الگوریتم های رمز نگاری یک طرفه ( hash ) در این مورد استفاده کرد خیلی خوب بود اما با توجه به بازگشتی نبودن این الگوریتم به نظر نمیشه از این روش استفاده کرد!!؟

rezaei manesh
دوشنبه 10 دی 1386, 12:15 عصر
در Web/App.config:

// Open the Web.config file.
Configuration config = WebConfigurationManager.
OpenWebConfiguration("~");
// Get the connectionStrings section.
ConnectionStringsSection section =
config.GetSection("connectionStrings")
as ConnectionStringsSection;
// Toggle encryption.
if (section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
}
else
{
section.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
}

// Save changes to the Web.config file.
config.Save();
من یک فرم درست کردم و این کد رو در اون قرار دادم و زمانی که پروژه رو از کامپیوتر خودم و با دات نت باز می کنم کانکشن استرینگ کد می شه و همه چی درست کار می کنه اما وقتی که همین وب کانفیگ رو به وب منتقل می کنم دیگه بانک باز نمی شه
وقتی هم که می خوام این فرم که کانکشن استرینگ رو کد می کنه رو در همون وب اجرا کنم تا اونجا کانکشن استرینگ رو کد کنه خطا می ده که دسترسی ندارید...
من باید چکار کنم
در ضمن این دو وارنینگ هم در وب کانفیگ می یاد اما درست کار می کنه (در لوکال)


1.The 'configProtectionProvider' attribute is not declared
2.The element 'connectionStrings' has invalid child element 'EncryptedData'. List of possible elements expected: 'add, remove, clear'.

Amir Oveisi
دوشنبه 10 دی 1386, 14:19 عصر
شما واسه اینکه الگوریتم بازگشت پذیر داشته باشی از RSA استفاده کن

rezaei manesh
سه شنبه 11 دی 1386, 15:53 عصر
کسی نیست جواب بده ؟
من اومدم از روش babak23 استفاده کنم اما اون روش برای ویندوز هست برای دسترسی به کلید هایی مانند پسورد در وب چجوراست؟
به عبارتی جایگزین این کد در asp.net چی هست
MOJAVEZ.Properties.Settings.Default.PassWord

kahkeshane2012
جمعه 13 دی 1392, 15:52 عصر
از روش web service هم میشه این کارا کرد.
اگر که کسی این روش را در c# تست کرده و جواب گرفته؛ توضیحی بده تا همه استفاده کنند و همچنین بنده ی حقیر ممنون میشیم.
باتشکر.