PDA

View Full Version : ارتباط امن با sql server



Ali_Programer
شنبه 17 بهمن 1388, 14:19 عصر
سلام دوستان
من دارم یه برنامه تحت شبکه با c# می نویسم که میخوام در اون با sql server ارتباط برقرار کنم.همونطور که میدونید دو تا راه هست، اما این راه ها اشکالات زیر رو دارند:
1-windows authentication:مشکل این راه این است که نیازمند راه اندازی دومین می باشد
2-sql server authentication: مشکل این روش اینه که میشه کانکشن استرینگ رو از برنامه بیرون کشید و با یوزر و پس به sql server وصل شد و سیاست های نرم افزار رو دور زد

راه حلی که خودم به ذهنم رسید اینه که یه یوزر با دسترسی تنها به sp ها بسازم و با اون وصل بشم و طبق زیر عمل کنم:
1-کاربر بعد از وارد کردن یوزر و پس، اگر درست بود یک رشته تصادفی ساخته شده و در رکورد یوزر در تیبل قرار بگیره و همچنین به برنامه اعلام بشه
2- برای هر تقاضای برنامه یک sp بنویسم و تمام سیاست ها و بررسی ها توسط sp انجام بشه
3-برنامه همراه با ارسال پارامترهای مخصوص به sp رشته دریافت شده رو هم به sp بده
4- sp بعد از بررسی وجود رشته دستورات رو اجرا کنه
5-در هنگام خروج رشته تصادفی از رکورد یوزر پامک بشه
در کل یه چیزهایی تو مایه های session

راه حل دوم:
یه تیبل یوزر برای یوزرهای sql server بسازم، کنترل دسترسی ها بر عهده sql server و اطلاعات مورد نیاز برنامه خودم درباره یوزرها رو از تیبل خودم بخونم

ممنون میشم راهنمایی بفرمائید که این روش درسته یا نه و یا راه حل دیگه ای هست؟
راه حل استاندارد چیست و در برنامه های تجاری چگونه این کار رو انجام میدن

با تشکر از شما دوستان

Nima NT
شنبه 17 بهمن 1388, 14:45 عصر
فکر کنم این مقاله (http://www.barnamenevis.org/forum/showthread.php?t=189664) کارتون رو راه بندازه ( البته در دلفی هست ولی سیاستهای استفاده شده کلی هستن و وابستگی به زبان خاصی ندارن ).

Ali_Programer
شنبه 17 بهمن 1388, 15:17 عصر
ممنون از کمکتون
اما تو این مقاله برنامه داره با یوزر و پسوردی که از کاربر میگیره به بانک داده متصل میشه.یعنی یوزر ها رو به عنوان لوگین sql server معرفی میکنه، اما من میخوام یک سری اطلاعات دیگه هم از یوزرهام ثبت کنم مثلا نام، سن و ...
اگر از این راه استفاده کنم باید یه تیبل درست کنم و همانند یوزرهامو تو این تیبل هم ثبت کنم و بعد ببینم که کدوم یوزر لاگین کرده و بعد بیام اطلاعاتشو از جدول خودم بکشم بیرون
آیا این روش صحیح هست؟
با تشکر

Nima NT
شنبه 17 بهمن 1388, 16:10 عصر
بله ؛ تنها چیزی که باید در نظر بگیرید این هست که برای دفعه اول اطلاعات کاربر رو عینا" در جدول ذخیره نکنید ؛ مثلا" کاربر با اسم علی وارد میشه ؛ شما مقدار هش علی رو ذخیره کنید ؛ در دفعات بعدی که کاربر اسم خودش رو وارد میکنه اگر میخواهید بررسی کنید که کاربر همون علی هست مقدار هش نام وارد شده رو با مقدار موجود در جدول مقایسه کنید ؛ اینطوری اگر پسورد پایگاه داده شما لو بره ؛ اطلاعات به درد نفوذگر نمیخوره.