ورود

View Full Version : مبتدی: دسترسی به پایگاه داده



f_arab
یک شنبه 11 مهر 1389, 08:39 صبح
سلام
برای اینکه بعد از ایجاد پایگاه داده و اتصال اون به برنامه کسی غیر از مدیر نتونه وارد پایگاه داده بشه و کاربران دیگر فقط از طریق برنامه به اون دسترسی داشته باشن باید چه کار کنم؟

aghayex
یک شنبه 11 مهر 1389, 22:18 عصر
شما دو بحث رو با هم قاطی کردید
1 - اگه می خواید دیتابیس فقط از طریق برنامه شما استفاده بشه کمترین کار اینه که یه رمز رو دیتاببیس بذاری
2 - منظرتون از کاربر ارشد یعنی چی ؟ یعنی در برنامه ، شما کاربر ارشد و کاربر عادی تعریف کردید ؟

f_arab
سه شنبه 13 مهر 1389, 10:29 صبح
شما دو بحث رو با هم قاطی کردید
1 - اگه می خواید دیتابیس فقط از طریق برنامه شما استفاده بشه کمترین کار اینه که یه رمز رو دیتاببیس بذاری
2 - منظرتون از کاربر ارشد یعنی چی ؟ یعنی در برنامه ، شما کاربر ارشد و کاربر عادی تعریف کردید ؟

من برای ورود به برنامه رمز عبور گذاشتم و با توجه به رمز عبور می خوام که یک سری افراد فقط دسترسی خواندن داشته باشند یا به بعضی قسمتها اصلا دسترسی نداشته باشند در ضمن میخوام برنامه تحت شبکه باشه. اگه پایگاه داده روی سرور نصب بشه بقیه کاربرها هم می تونن اونو ببینن. برای ورود به پایگاه داده پطور می تونم روز بذارم که کسی غیر از من نتونه وارد بشه؟
ببخشید که اگه سؤالام ابتداییه چون من خیلی با SQL کار نکردم.

saeed_r67
سه شنبه 13 مهر 1389, 12:28 عصر
من برای ورود به برنامه رمز عبور گذاشتم و با توجه به رمز عبور می خوام که یک سری افراد فقط دسترسی خواندن داشته باشند یا به بعضی قسمتها اصلا دسترسی نداشته باشند در ضمن میخوام برنامه تحت شبکه باشه. اگه پایگاه داده روی سرور نصب بشه بقیه کاربرها هم می تونن اونو ببینن. برای ورود به پایگاه داده پطور می تونم روز بذارم که کسی غیر از من نتونه وارد بشه؟
ببخشید که اگه سؤالام ابتداییه چون من خیلی با SQL کار نکردم.

سلام.
دوست عزیز شما تو بانک تو جدول کاربرت یه متغییر از نوع بیت بگیر و وقتی کسی با کد فرضا 2 وارد شد اون متغییر بیت رو true کن حالا اگه کسه دیگه میخواد بره بذار اول متغییر بین رو چک کنه اگه true بود وارد نشه . حالا اون کاربری که داخل هست ، وقتی از برنامه می خواد خارج بشه بره و متغییر true شده رو false کنه .

f_arab
سه شنبه 13 مهر 1389, 20:59 عصر
سلام.
دوست عزیز شما تو بانک تو جدول کاربرت یه متغییر از نوع بیت بگیر و وقتی کسی با کد فرضا 2 وارد شد اون متغییر بیت رو true کن حالا اگه کسه دیگه میخواد بره بذار اول متغییر بین رو چک کنه اگه true بود وارد نشه . حالا اون کاربری که داخل هست ، وقتی از برنامه می خواد خارج بشه بره و متغییر true شده رو false کنه .

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

AmirAmiri
سه شنبه 13 مهر 1389, 21:22 عصر
سلام.
اتفاقا منم همین سوال رو دارم. چطور میشه روی Data Base رمز گذاشت. منظور من و دوست عزیزمون سرور نیست بلکه خوده بانک است. مثلا میخوایم روی بانک master رمز بزاریم و کسی نتونه بدونه رمز وارد master بشه و اطلاعاتش رو تغییر بده چون ممکنه مشتری، ویندوز عوض کنه بعد SQL نصب کنه اما پسورد نزاره و بانک را توی SQL اتچ (Attach) کنه اون طوری میتونه به تمامه اطلاعاته بانک دسترسی داشته باشه.
برای جلوگیری از دسترسی مستقیم به بانک چکار باید کرد؟ چطور میشه روش رمز گذاشت؟

aghayex
سه شنبه 13 مهر 1389, 21:49 عصر
شما باید دو کار انجام بدید ( البته به نظر من ) :
1 = یه رمز بذاری رو دیتابیست که فقط خودتت بتونی بازش کنی
2 = یه قسمت تو برنامت درست کنی که کاربر رو تعریف کنه ، سطح دسترسی براش تعیین کنه ، کاربر رو حذف کنه ( حالا می تونی مشخصات این کاربرها با مشخصات سطح دسترسی رو طی یه جدول در دیتابیست قرار بدی یا نه طی یه فایلی در برنامت قرار بدی
(( من این کارو در یه برنامه انجام دادم یه جدول گذاشتم نام و رمز رو از نو nvarchar و بقیه ستون ها از قبیل حق ثبت ، حق ویرایش ، حق حذف و ... رو از نوع بیت قرار دادم ))

AmirAmiri
سه شنبه 13 مهر 1389, 22:03 عصر
شما باید دو کار انجام بدید ( البته به نظر من ) :
1 = یه رمز بذاری رو دیتابیست که فقط خودتت بتونی بازش کنی
2 = یه قسمت تو برنامت درست کنی که کاربر رو تعریف کنه ، سطح دسترسی براش تعیین کنه ، کاربر رو حذف کنه ( حالا می تونی مشخصات این کاربرها با مشخصات سطح دسترسی رو طی یه جدول در دیتابیست قرار بدی یا نه طی یه فایلی در برنامت قرار بدی
(( من این کارو در یه برنامه انجام دادم یه جدول گذاشتم نام و رمز رو از نو nvarchar و بقیه ستون ها از قبیل حق ثبت ، حق ویرایش ، حق حذف و ... رو از نوع بیت قرار دادم ))
سلام دوست عزیز.
ممکنه همین رمز گذاشتن رو توضیح بدید؟ والا من هرچی SQL را زیرو رو کردم جایی برای رمز گذاشتن روی Data Base پیدا نکردم.
اگه همین رو یاد بدی خیلی آقایی کردی.
ممنون.

f_arab
چهارشنبه 14 مهر 1389, 10:15 صبح
سلام
از راهنمایی های دوستان خیلی ممنونم واقعا مفید بود.
فقط رمز گذاشتن روی دیتا بیس هم اگه میشه یه توضیح بدین چون نمیدونم چطور باید رمز بذارم.

f_arab
چهارشنبه 14 مهر 1389, 19:58 عصر
دوستان عزیز اگه نمیشه روی پایگاه داده رمز گذاشت لطفا بگین که بدونم و اگر میشه لطفا یه نفر بگه چه جوری؟ ممنون میشم اگه جوابمو بدین چون برام مهمه.

esmit61
چهارشنبه 14 مهر 1389, 20:34 عصر
شما از چه نرم افزاری برای اتصال به پایگاه داده استفاده میکنید؟ اگر از Management studio 2005 یا 2008 استفاده میکنید که همون اولش ازتون یوزر پسورد میخواد! میتونید در قسمت login سرور، هر login ی که خواستید رو ایجاد کنید. بعد از روی این Login ها روی هر پایگاه داده یک user درست میکنید.
اینجوری فقط کسی که یوزر پسورد داره به پایگاه دسترسی خواهد داشت. در برنامه هم که ی یوزر پسورد مجاز تعریف میکنید تا کاربرها از طریق برنامه به پایگاه دسترسی داشته باشند.

AmirAmiri
پنج شنبه 15 مهر 1389, 16:22 عصر
شما از چه نرم افزاری برای اتصال به پایگاه داده استفاده میکنید؟ اگر از Management studio 2005 یا 2008 استفاده میکنید که همون اولش ازتون یوزر پسورد میخواد! میتونید در قسمت login سرور، هر login ی که خواستید رو ایجاد کنید. بعد از روی این Login ها روی هر پایگاه داده یک user درست میکنید.
اینجوری فقط کسی که یوزر پسورد داره به پایگاه دسترسی خواهد داشت. در برنامه هم که ی یوزر پسورد مجاز تعریف میکنید تا کاربرها از طریق برنامه به پایگاه دسترسی داشته باشند.
با تشکر از توضیحاته جنابه esmit61
اگه ممکنه بیشتر توضیح بدید. بنده روی SQL هیچ پسوردی نذاشتم و موقع نصب Windows Authentication رو انتخاب کرده بودم. چیزی که شما گفتید رو تست کردم و برای دیتابیس خودم یک user تعریف کردم اما نتونستم برای اون یوزر کلمه رمز بزارم.
ضمن اینکه باید دوباره متذکر بشم ، هدفه من و جنابه f_arab رمز گذاشتن روی خوده فایل دیتابیس هست طوری که Attach شده باشه اما توسط کاربر باز نشه. به عبارتی زمانه باز شدن ، کلمه زمر بخواد تا کسی نتونه بدونه داشتن کلمه رمز وارده دیتابیس بشه و تغییراتی ایجاد کنه.
اما دیتابیس های دیگه رمز نداشته باشن و بشه اونارو باز کرد.
توجه داشته باشید که مقصوده ما فقط رمز گذاشتن روی یک دیتابیس هست و نه کله دیتابیس ها یا رمز گذاشتن روی یک یوزر برای لاگین شدن.
خواهش میکنم کمی یاری بفرمائید.

esmit61
پنج شنبه 15 مهر 1389, 16:55 عصر
دو تا فرضیه وجود داره:
یکی اینکه شما نمیخواهید کاربر غیر مجاز به یک دیتابیس دسترسی داشته باشد. در اینصورت با توضیحاتی که بالا عرض کردم میتونید به راحتی این کار رو انجام بدید.
فرضیه دوم اینه که کاربر (حتی اگر با روش قبلی سطح دسترسی را منع کرده باشید) به فایل mdf و ldf پایگاه دسترسی پیدا کرده و از آنها کپی میگیرد و آنها را در سیستم دیگر attach میکند. در اینصورت بهترین کار استفاده از sql server 2008 و استفاده از TDE می باشد. برای توضیحات بیشتر اینجا (http://barnamenevis.org/forum/showthread.php?t=145359) رو مطالعه بفرمائید

حمیدرضاصادقیان
شنبه 17 مهر 1389, 11:10 صبح
سلام.شما برای جلوگیری از دسترسی به دیتابیس و محتویات آن دوکار باید انجام بدید.
1- قرار دادن رمز برای کاربر SA که کسی نتونه وارد بشه.
2- رمز نگاری کردن اطلاعات دیتابیس که اگر کسی فایلهای دیتابیس شما رو برداشت و جای دیگه ای Attach کرد نتونه محتویات اونو مشاهده کنه که این مورد در نسخ 2005 و 2008 امکان پذیر هست و به شما کلیدهای رمز نگاری میده که میتونید اینکار رو انجام بدید.
موفق باشید

AmirAmiri
شنبه 17 مهر 1389, 14:33 عصر
سلام.شما برای جلوگیری از دسترسی به دیتابیس و محتویات آن دوکار باید انجام بدید.
1- قرار دادن رمز برای کاربر SA که کسی نتونه وارد بشه.
2- رمز نگاری کردن اطلاعات دیتابیس که اگر کسی فایلهای دیتابیس شما رو برداشت و جای دیگه ای Attach کرد نتونه محتویات اونو مشاهده کنه که این مورد در نسخ 2005 و 2008 امکان پذیر هست و به شما کلیدهای رمز نگاری میده که میتونید اینکار رو انجام بدید.
موفق باشید
سلام جناب آقای صادقیان. ممنون از راهنمایی خوبتون. :لبخندساده:
من فکر میکنم اگه اطلاعات دیتابیس رمزنگاری بشه تا حدودی امنیت بالا میره اما برای جلوگیری از تغییرات مفید نیست. (البته فقط نظره منه)
اگه ممکنه کمی در مورد رمز نگاری توضیح بدید. آیا محتویات درون فیلدها رمزنگاری میشن یا کله بانک رمزنگاری میشه؟ :متفکر:
چطوری میتونیم بانک رو رمز نگاری کنیم؟
ممنون از کمکتون. :چشمک:

حمیدرضاصادقیان
شنبه 17 مهر 1389, 14:39 عصر
سلام.شما کل بانک رو رمزنگاری میکنید. بعد کاربر وقتی ندونه چه چیزی رو باید دستکاری کنه به چه دردش میخوره تغییر اطلاعات؟؟

AmirAmiri
شنبه 17 مهر 1389, 14:50 عصر
سلام.شما کل بانک رو رمزنگاری میکنید. بعد کاربر وقتی ندونه چه چیزی رو باید دستکاری کنه به چه دردش میخوره تغییر اطلاعات؟؟
یعنی در این حالتی که شما میگید، حتی نام فیلدها هم رمزنگاری میشه؟ یعنی مثلا اگه فیلدی به نام RegistrationCode داشته باشیم و از نوع nvarchar باشه، نام فیلد هم رمزنگاری میشه و نمیشه اسمش رو دید؟
اگه اینطور باشه حرف شما کاملا صحیحه و این امکان خیلی خوبه.

حمیدرضاصادقیان
یک شنبه 18 مهر 1389, 08:11 صبح
سلام.در این لینک (http://msdn.microsoft.com/en-us/library/bb934049.aspx) هم یک مثال زده هم توضیح کاملی در این زمینه ارائه کرده است.
موفق باشید

f_arab
یک شنبه 18 مهر 1389, 09:30 صبح
سلام
من برای کاربر sa رمز گذاشتم البته به صورت پیش فرض یک رمز داشت ولی من اونو تغییر دادم تا رمزی باشه که خودم بدونم با این حال باز هم بدون وارد کردن رمز عبور و در حالت windows athentication میتونم به سرور کانکت بشم و همه اطلاعات رو ببینم. و یه سؤال دیگه هم که داشتم این بود که چطور میشه اطلاعات دیتابیس رو رمزنگاری کرد؟
در ضمن من از windows xp sp2 professional استفاده میکنم و وقتی میخوام یک login ایجاد کنم به پیام زیر رو میده ممکنه در این مورد هم منو راهنمایی کنید.
متشکرم

shocraneh
دوشنبه 19 مهر 1389, 09:15 صبح
باسلام .رفقا اگه جواب گرفتند اینجا روش کارشونو توضیح بدن منم مشکل دارم
من می خام فقط دیتابیس مورد نظر خودم پسورد داشته باشه و اصلا به اسکیوال کاری ندارم .
یه برنامه دیگه هم رو اون سیستم نصبه و فقط من باید بانکم رو اتچ کنم که میخام به صورت دستی کاربر نتونه بانک رو باز کنه . lمن یوزر درست میکنم اما انگار هیچ تاثیری نداره و بدون پسورد بانک رو باز میکنه؟؟

f_arab
دوشنبه 19 مهر 1389, 09:16 صبح
سلام
کسی در مورد سؤالی که من پرسیدم نظری نداره اگه ممکنه راهنمای کنید چون برام خیلی مهمه من تجربه زیادی در مورد کار با SQL به خصوص 2005 ندارم و خیلی سطحی و در حد ایجاد پایگاه داده و جدول و query با اون کار کردم و در ضمن برای استاد من امنیت اطلاعات خیلی مهمه به خاطر همین زیاد از این سؤالات میپرسم.:ناراحت:
ممنون میشم اگه راهنمایی کنید.:لبخندساده: