سلام
نمونه مورد نظر را حاضر کردم، نمونه جاری شامل کد VB به همراه #C است.
در این نمونه آیتم با نام ConnectionString در Settings قرار دارد که مسئول تغذیه DataAdapter های Typed است و فقط در زمان اجرای برنامه و چرخه RAM ست شده و مقدار معتبری دارد.
و آیتمی هم با نام CSSave وجود دارد که دخیره طولانی مدت و بین اجرا ها را بر اهده دارد.
یعنی آیتم قبلی مثل RAM است و این یکی مثل Hard !!!!
نکته خاص و مورد توجه ان است که اگر ConnectionString در options تنظیم شود، در اجرای بعدی برنامه استفاده خواهد شد و تا اجرای جاری برنامه، همچنان از مقدار قبلی موجود در آیتم ConnectionString استفاده خواهد شد.
دلیل این کار هم ، در این برنامه درپیت ساده معلوم نمیشود! اگر شما برنامه ای بزرگ و MDI ای داشته باشید، امکان دارد در همان لحظه که ConnectionString در Options شما تغییر داده میشود، در نقاط مختلف برنامه چندین SqlConnection باز برای انواع کارها و رسیدگی ها وجود داشته باشد، که تغییر آنها خیلی سخت و کد زیادی بخواهد و چندان منطقی نباشد، اگر هم بگذاریم فقط SqlConnection های جدید با ارتباط جدید ساخته شوند، اصلاً جالب نیست و بهتر است در هر لحظه تمام Connection ها به یک جا نشانه روی و وصل شده باشند.
پس راه منطقی برای همچین برنامه بزرگی، اعمال تغییرات در Restart بعدی برنامه است.
چون موارد ذخیره شده در Settings اصلاً امن نیستند و کاملاً به صورت متنی و ساده نگاه داشته میشوند، پیشنهاد میشود برای حفظ و حراست از user و pass ارزشمند، مقدار CSSave رمز گذاری شود.
من فقط برای نمونه از رمزگذاری ساده ------ استفاده کردم، که در اصل چندان هم رمزنگاری نیست و خیلی ساده قابل دکد است، ولی این فقط جهت نمونه و با یک خط کد پیاده سازی شده و البته جلوی افراد فضول را از کشف مقدار حقیقی ConnectionString و user و pass میگیرد!
پیشنهاد میکنم برای رمز نگاری محکم تر به تاپیک زیر مراجعه کنید، نمونه کد که رمز نگاری واقعی را در دات نت شامل میشود.
forum.p30world.com/showthread.php?t=244318&page=2
دو مطلب دیگر باقی است!
اول آنکه: اگر مایل بودید میتوانید اجازه تغییر یک سری موارد ConnectionString را به کاربران ندهید.
مثلاً DataBaseName در برنامه فیکس باشد و کاربر نتواند تغییرش دهد و یا حتی برخی دوستان سخت گیر هم به دلیل سادگی برنامه و هم امنیت بیشتر (به تفکر خودشان) User و Pass را هم فیکس میکنند و کاربر فقط و فقط اجازه ادیت نام یا IP سرور را دارد.
بهرحال اینکه کاربر چه حد اختیار در ویرایش ConnectionString دارد به شما بستگی دارد، ولی DataSource حداقل و خط مرزی برنامه باید باشد.
دوم هم: معمولاً اگر برنامه قرار است در شبکه کار کند، Timeout پیش فرض 15 ثانیه، زیاد جالب نیست و شاید با یک سرور شلوغ مشکل ساز شود، در نتیجه پیشنهاد میکنم، یا اجازه ویرایش Timeout را هم در options در نظر بگیرید، یا آن را با مقدار معقول تر و ثابتی فیکس کنید، مثلاً 30 تا 60 شاید بد نباشد.
پرحرفی کافیست! این هم لینک دانلود:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید