ورود

View Full Version : سوال: برنامه نویسی سه لایه و محل قرارگیری Connection String



fa_karoon
دوشنبه 11 مهر 1390, 12:39 عصر
سلام دوستان
می خواستم ببینم آیا Connection String حتما باید در لایه ی DAL قرارگیرد؟ من می خواهم یک نمونه SqlConnection را با Connection String مورد نظرم در لایه DAL ، new کنم، سپس تابعی داشته باشم که این نمونه را به عنوان خروجی بدهد، و من این تابع را در Application_Start صدا کنم و Connectionام را در یک متغیر Application بریزم تا دیگر نیازی به New کردن آن نباشد و همیشه آن را داشته باشم
دوستان لطفا نظر بدهید آیا به لحاظ فنی و امنیتی چنین کاری صحیح است؟

mehran_sh_t
دوشنبه 11 مهر 1390, 12:46 عصر
از آنجا که قراردادن Connection String در WebConfig ناامن است.
چرا نا امنه؟ مگه کسی می تونه بهش دسترسی داشته باشه؟

mohsen.nsb44
دوشنبه 11 مهر 1390, 20:35 عصر
دوست عزیز خیلی از کارای امنیتی داخل وب کانفیگ انجام میشه اگه نا امن باشه که فاتحه وب سایت خوندست عزیز
لطفا کمی در این مورد تحقیق کن فقط تکرار گر حرف های دیگران نباش واسه حرفی که میزنی دلیل بیار تا مشاهده کنندگان رو قانع بکنی
موفق باشی

fa_karoon
دوشنبه 11 مهر 1390, 22:57 عصر
از پاسخ دوستان ممنون اما اگه می شه جمله اول رو نادیده بگیرید و در مورد روشی که مطرح کرده ام لطفا به لحاظ امنیتی و فنی و سرعت راهنمایی کنید
باتشکر قبلی
موید و پیروز

fakhravari
دوشنبه 11 مهر 1390, 23:53 عصر
با سلام
Application_Start به ازای هر بار درخواست صفحه رخ بدهد اگر با صفحه هاتی که با دیتابیس هم در ارتباط نیستند یک ارتباط به بانک برقرار شه به نظر شما جالب است؟؟؟

Saman Hashemi
سه شنبه 12 مهر 1390, 08:24 صبح
Application_Start به ازای هر بار درخواست صفحه رخ بدهد اگر با صفحه هاتی که با دیتابیس هم در ارتباط نیستند یک ارتباط به بانک برقرار شه به نظر شما جالب است؟؟؟
Application_start یکبار و برای اولین درخواست اجرا میشه و نه با هر درخواست بعدم باز کردن ارتباط با بانک و نبستن آن مشکلاتی را برای برنامه بوجود میاره...!

از آنجا که قراردادن Connection String در WebConfig ناامن است.
به راحتی این امکان در webconfig وجود داره که کانکشن استرینگ encrypt کنید...!

fa_karoon
سه شنبه 12 مهر 1390, 10:27 صبح
Application_start باز کردن ارتباط با بانک و نبستن آن مشکلاتی را برای برنامه بوجود میاره...!


دوست عزیز من فقط نمونه New شده Connection ام رو از لایه DAL می خونم و در یک متغیر Application می ریزم من Connection ام رو در Application_Start باز(Open) نمی کنم که

بعد هم دوستان در مورد Application_Startتو رو خدا فلسفه های جدید نگید یعنی شما حرفه ای هستید ها

Saman Hashemi
سه شنبه 12 مهر 1390, 11:44 صبح
بعد هم دوستان در مورد Application_Startتو رو خدا فلسفه های جدید نگید یعنی شما حرفه ای هستید ها
دوست عزیز شما که میدونی ما را جهالت دربیار ،میشه برام توضیح بدی این رویداد کی و چجوری اتفاق میوفته و به درد چی میخوره؟:متفکر:

fakhravari
سه شنبه 12 مهر 1390, 13:24 عصر
نه من منظورم این بود به هر حال یک بار اجرا می شود ولی اگه کاربر دوباره پنجره باز و بسته کرد ویا خواست به صفحاتی برود که با دیابیس سروکار ندارد چرا این دستور اجرا شود.خوب شما که میگید open نمکنید پس برای چه کاری می خواهید؟

Saman Hashemi
سه شنبه 12 مهر 1390, 13:44 عصر
احتمالا برای نگهداری کانکشن استرینگ که مشکلی نداره و شیوه نسبتا خوبیه اما استاندارد این کار استفاده از webconfig (http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx)...!

fa_karoon
سه شنبه 12 مهر 1390, 17:35 عصر
دوست عزیز شما که میدونی ما را جهالت دربیار ،میشه برام توضیح بدی این رویداد کی و چجوری اتفاق میوفته و به درد چی میخوره؟:متفکر:
دوست گرامی لطفا ناراحت نشید حرف شما در مورد این رویداد درست است(فقط هنگامی که سایت آپلود می شود در اولین درخواست به آن اتفاق می افتد)

بعد اینکه بله دقیقا برای نگهداری ConnectionString می خواهمش
در مورد WebConfig مواردی را دیده ام که هک شده اند و رشته اتصالشان لو رفته اما متاسفانه نمی توانم اینجا مثالی بزنم

mehran_sh_t
سه شنبه 12 مهر 1390, 18:39 عصر
از متغیر های static استفاده کنید، در Global
بار اول تو application_start بخونیدش

البته من هنوز نسبت به فایل کانفیگ شک دارم که انقدر ناامن باشه! شاید از این هاست مجانی ها بوده که به طریقی قابل دسترسی بوده

Saman Hashemi
چهارشنبه 13 مهر 1390, 08:17 صبح
بهترین راه همون WebConfig چون اولا مانند متدهای استاتیک و... از حافظه استفاده نمیکنه و ثانیا تغییراتش نیازمند پابلیش مجدد پروژه نیست...!
حالا برای نگهداری این کانکشن میشه 1000تا راه انتخاب کرد اگر به سرور دسترسی داشته باشید که بیشتر...!