بخشی از مقاله
فعال نمودن و غير فعا ل نمودن يک Connection
بمنظور فعال نمودن و يا غير فعال نمودن يک Connection می توان بصورت تلويحی عمليات فوق را با فراخوانی متدهای يک شی که از Connection استفاده می نمايند انجام و يا با صراحت و بکمک متدهای Open و يا Close اقدام به فعال نمودن و يا غير فعال نمودن Connection نمود . متدهای Open و Close دو متد اوليه برای هر Connection می باشند .
• متد Open با استفاده از اطلاعات موجود در خصلت ConnectionString ، با يک منبع داده ارتباط و يک ارتباط فعال شده را ايجاد خواهد کرد .
• متد Close باعث غير فعال شدن Connection می گردد .
لازم است به اين نکته اشاره گردد که بستن ( غير فعال نمودن ) يک Connection امری لازم و ضروری است ، چراکه اکثر منابع داده صرفا" تعداد محدودی از ارتباطات فعال را حمايـت نموده و در ضمن ارتباطات فعال ، منابع با ارزش سيستم را اشغال و حجم عملياتی بر روی سيستم را افزايش خواهند داد .
فعال نمودن و غير فعال نمودن صريح يک Connection
استفاده صريح از متدهای Open و Close بمنظور فعال نمودن و يا غير فعال نمودن Connection توصيه و دارای مزايای زير است :
• کد نوشته شده دارای خوانائی بمراتب بيشتری خواهد بود .
• اشکال زدائی برنامه ها با سرعت مطلوبی انجام خواهد شد .
• موثرتر می باشد.
پس از استفاده Connection ، لازم است که ارتباط ايجاد شده غير فعال گردد . بدين منظور، می توان از متدهای Close و يا Dispose مربوط به شی Connection استفاده نمود. متد Close ، تراکنش های بلاتکليف را تعيين تکليف نموده و در ادامه ارتباط را غير فعال می نمايد . در موارديکه Pooling فعال شده باشد ، متد فوق باعث آزادسازی ارتباط ايجاد شده از Connection pool می گردد . فراخوانی متد Close توسط يک برنامه می تواند چندين مرتبه صورت پذيرد.
فعال نمودن و غير فعال نمودن تلويحی يک Connection
در صورت استفاده از DataAdapters ، ضرورتی به فعال نمودن و يا غير فعال نمودن يک Connection وجود نخواهد داشت . زمانيکه يکی از متدهای مربوط به اشياء فوق ، فراخوانده می گردد ( مثلا" متد Update و يا Fill مربوط به شی SqlDataAdapter ) ، متد مورد نظر بررسی لازم در خصوص فعال بودن ار
تباط را انجام و در صورتيکه ارتباط فعال نشده باشد ، SqlDataAdapter ارتباط را فعال و پس از انجام عمليات مورد نظر ، ارتباط را غير فعال خواهد نمود .
مثال : در صورتيکه يک DataSet داده خود را از چندين جدول متفاوت که در بانک اطلاعاتی مشابه قرار دارند ، دريافت می نمايد ،صرفا" يک Connection وجود داشته و دارای چندين DataAdapters خواهيم بود (هر DataAdapters مرتبط با يک جدول ) . در صورتيکه Connection بصورت تلويحی ( عدم استفاده صريح از متدهای Open و Close ) فعال و يا غير فعال گردد ، در زمان پر نمودن اطلاعات در Dataset ، ارتباط با منبع داده چندين مرتبه فعال و يا غير فعال خواهد شد . در چنين مواردی مناسب است که در ابتدا Connection با صراحت فعال و پس از فراخوانی متدهای Filling مربوط به چندين DataAdapters ، ارتباط ايجاد شده با منبع داده را با بکارگيری متد Close و باصراحت غير فعال نمود .
استفاده از متد Dispose
زمانيکه يک Connection غيرفعال می گردد ، جريان اطلاعات به و يا از منبع داده غير فعال می گردد. در چنين حالتی ، منابع غيرمديريت يافته استفاده شده توسط شی Connection ، آزاد نخواهند گرديد.در صورتيکه Connection pooling فعال شده باشد ، عمليات آزاد سازی Connection از Pool نيز انجام خواهد شد. اشياء SqlConnection و OleDbConnection دارای يک متد Dispose بوده که از آن بمنظور آزادسازی منابع غيرمديريت يافته استفاده می گردد . با فراخوانی متد Dispose ، عمليات حذف Connection از Connection pool نيز انجام خواهد شد .
مثال : استفاده از متد Dispose
در مثال زير، يک شی SqlConnection ايجاد و در ادامه با استفاده از متد Open فعال و سپس بمنظور غيرفعال نمودن Connection و آزاد سازی منابع استفاده شده توسط Connection از متد Dispose استفاده و در نهايت شی مورد نظر به Nothing مقداردهی شده است .
نحوه استفاده از متد Dispose
تعريف و نمونه سازی يک شی جديد SqlConnection '
Dim cnNorthwind AS New System.Data.SqlClient.SqlConnection ()
مقدار دهی مناسب خصلت ConnectionString '
cnNorthwind.ConnectionString = "Data Source="(Local); " & _
"Initial Catalog = Northwind;" & _
"Integrated Security=SSPI;"
فعال نمودن Connection '
cnNorthwind.open()
انجام عمليات دلخواه و مرتبط با بانک اطلاعاتی '
بستن Connection که باعث آزاد سازی آن از Connection Pool '
بر روی سرويس دهنده می گردد .'
cnNorthwind.Close()
Dispose نمودن ارتباط که باعث حذف connection از connection pool بر روی ' سرويس دهنده می گردد ، ذخيره سازی منابع سرويس دهنده '
cnNortwind.Dispose()
آزاد سازی حافظه اشغال شده توسط شی SqlConnection '
cnNorthwind = Nothing
برخورد با رويدادهای Connection
رويداد StateChange زمانی که وضعيت Connection تغيير نمايد ، محقق می گردد( وضعيت Connection از فعال به غير فعال و يا از غير فعال به فعال تبديل گردد) .بمنظور برخورد مناسب با هر يک از رويدادها ، از يک Event handler استفاده می گردد. هر رويداد دارای Event handler مختص خود می باشد. Event handler مربوط به رويداد StateChange ، متدی است که دارای آرگومانی از نوع StateChangeEventArgs می باشد . آرگومان فوق، شامل داده مرتبط با رويداد است .
رويداد StateChange
نوع NET data provider . ، که از آن استفاده می گردد ، آرگومان های خاص مربوط به رويداد StateChange را مشخص می نمايد :
• رويداد SqlConnection.StateChange برای يک شی SqlConnection
• رويداد OleDbConnection.StateChange برای يک شی OleDbConnection
لازم است بدين نکته اشاره گردد که تمامی رويدادها در دات نت دارای دو پارامتر زير می باشند :
• ارسال کننده ( از نوع شی )
• e از نوع XxxEventArgs
برای رويداد StateChange ، پارامتر e از نوع StateChangeEventArgs می باشد.event handler مربوط به دو رويداد فوق ، نوع مشابهی از آرگومان ها را دريافت می نمايد : StateChangeEventArgs که شامل داده مرتبط با اين رويداد است . جدول زير خصلت های مربوط به کلاس StateChangeEventArgs را نشان می دهد :
شرح خصلت
خصلت فوق ، وضعيت جديد Connection را مشخص می نمايد. زمانيکه رويداد محقق گردد، شی Connection همواره در يک وضعيت جديد خواهد بود . CurrentSatate
وضعيت اوليه Connection را برمی گرداند . OriginalSate
نمونه ای از يک Event Handler مربوط به StateChange
مثال زير نحوه ايجاد StateChangeEventHandler را با VB.NET ، نشان می دهد :
نحوه استفاده ازيک Event Handler با استفاده از VB.NET
Private Sub cnNorthwind_State ( ByVal Sender As Object , ByVal e As System.Data.StateChangeEventArgs) Handles cnNorthwind.StateChange
نمايش وضعيت اوليه و جاری State در يک messagebox '
زمانی که وضعيت Connection تغيير می نمايد '
MessageBox.Show("CurrentState: "& e.Currentstate.ToString() & vbCrLF & _ "OriginalState : " & e.OriginalState.ToString() , _
"cn.Northwind.StateChange" , _
MessageBoxButtons.OK,_
MessageBoxIcon.Information)
End Sub
دفاع در مقابل کرم ها و ويروس ها
کرم ها و ويروس ها نوع خاصی از برنامه های کامپيوتری موسوم به " کد مخرب " می باشند. علت ظهور کرم ها و ويروس ها ، وجود ضعف در برنامه ها ی کامپيوتری است . آنان نسخه هائی از خود را تکرار و يا به ساير برنامه ها متصل، بسرعت گسترش و بسادگی از سيستمی به سيستم ديگر توزيع می شوند.درابتدا لازم است که تعريف مناسبی برای هر يک از آنان ارائه گردد . کرم ها ، نوع خاصی ازبرنامه های کامپيوتری می باشند که پس از آغاز فعاليت خود ، بدون مداخله انسانی منتشر و توزيع خواهند شد. ويروس ها ، نوع ديگری از برنامه های کامپيوتری می باشند که بمنظور انتشار و توزيع خود نيازمند انجام عمليات خاصی توسط کاربر نظير فعال شدن فايل همراه يک نامه الکترونيکی می باشند.کاربران در اغلب موارد و در مشاهده با فايل های ضميمه همراه نامه های الکترونيکی ، اغوا و بدون لحاظ نمودن مسائل امنيتی آنان را باز و به عاملی برای گسترش يک ويروس تبديل می شوند. کاربران بدليل کنجکاوی مربوط به موضوع يک نامه و يا ظاهر شدن نامه بگونه ای که برای مخاطب خود آشنا است ، اقدام به باز نمودن ضمائم يک نامه الکترونيکی می نمايند. کرم ها و ويروس می توانند اقدامات پيشگيرانه امنيتی نظير فايروال ها و سيستم های حفاظتی را ناديده و اهداف خود را دنبال نمايند.
کرم ها و ويروس ها در مقايسه با گذشته با سرعت بمراتب بيشتری اقدام به خرابی سيستم های آسيب پذير نموده و در اين راستا نسخه هائی از خود را برای اکثر سيستم های فوق ، توزيع و منتشر می نمايند. کامپيوترهای موجود در منازل ، نمونه مناسبی از سيستم های آسيب پذير بوده که شرايط و استعداد
مناسبی را در اين رابطه دارند. کرم Code Red در سال 2001 بسرعت در سطح جهان منتشر گرديد . سرعت انتشار کرم فوق، بمراتب بيشتر از کرم Morris در سال 1988 و ويروس مليزا در سال 1999 بود. بديهی است، افزايش سرعت انتشار اين نوع از کدهای مخرب ، سرعت در بروز خرابی و آسيب را بدنبال خواهد
داشت . مثلا" فاصله زمانی بين شناسائی اولين نسخه کرم Code Red و خرابی گسترده آن ، صرفا" چندين روز بيشتر نبوده است و دراين فاصله زمانی محدود، Code Red بسرعت اشاعه و گسترش پيدا کرده بود. پس از گذشت يک ماه از ظهور کرم Code Red ، کرم ديگری با نام "نيمدا" توانست در اولين ساعت فعاليت خود ، خرابی بسيار گسترده ای را ايجاد نمايد . در ژانويه همان سال ، " اسلامر" توانست صرفا" در مدت چندين دقيقه خرابی گسترده ای را بوجود آورد .شکل
زير،سرعت انتشار و ميزان آسيب رسانی " اسلامر" ، بلستر و Code red در اولين روز فعال شدن را نشان می دهد . همانگونه که مشاهده می شود ، اسلامر توانسته است با سرعت بيشتری در اولين ساعات فعال شدن خود ، تعداد زيادی از سيستم ها را آلوده نمايد. سرعت انتشار بلستر از اسلامر کندتر ولی از
Code Red سريعتر بوده است . پس از گذشت بيست و چهار ساعت، بلستر به 336،000 ، .Code Red به 265،000 و اسلامر به 55،000 دستگاه کامپيوتر آسيب رسانده بودند. دقت داشته باشيد که بلستر در هيجده ساعت اوليه فعاليت خود تواسنه است بيش از 336،000 کامپيوتر را آلوده نمايد. بلستر نسبت به اسلامر توانسته است عليرغم کند بودن انتشار در ساعات اوليه ، تعداد بمراتب بيشتری از سيستم ها را آلوده نمايد . بنابراين ، ما از يکطرف سرعت در انتشار و از طرف ديگر افزايش بالای تعداد سيستم های آسيب پذير را می توانيم مشاهده نمائيم .
منبع : CERT.org
شکل زير، عملکرد کرم بلستر و Code Red در هيجده ساعت اوليه فعاليت آنان را نشان می دهد. در هر دو حالت در ساعات بين سه تا پنج اوليه فعاليت ، نزديک به 100،000 کامپيوتر آلوده شده بود. سرعت انتشار و آسيب به اندازه ای سريع بوده است که اغلب مديران سيستم و کاربران زمان لازم بمنظور ايمن سازی سيستم ها پس از اعلام ضعف امنيتی را نداشته اند .
منبع : CERT.org
عملکرد کرم ها و ويروس ها در بهترين حالت ، کرم ها و ويروس ها بمنزله مزاحمينی می باشند که بمنظور برخورد با آنان می بايست هزينه های زيادی صرف گردد . در بدترين حالت ، آنان بمنزله دشمنان خانمان سوزی بوده که قادرند سرمايه های اطلاعاتی را نابود و ويران نمايند. بر اساس گزارشات منتشر شده ،
صرفا" در دوازده ماه گذشته ، حملات کرم ها و ويروس ها ميليون ها دلار خسارت را متوجه سازمان ها و موسسات نموده است . براساس نظر سنجی انجام شده توسط CSI/FBI در سال 2003 ، بيش از هشتاد و دو درصد از پاسخ دهندگان با نوع خاصی از حملات توسط ويروس ها و کرم ها برخورد داشته که هزينه ای معادل 27،382،340 دلار صرف برطرف نمودن مشکلات مربوطه شده است . کمترين هزينه گزارش شده 40،000 دلار و بيشترين هزينه گزارش شده بالغ بر
6،000،000 دلار بوده است . در يک نظر سنجی ديگر و در استراليا نيز نتايجی مشابه بدست آمده است . در اين نظر سنجی بيش از هشتاد درصد از پاسخ دهندگان با نوع خاصی از حملات توسط کرم ها و يا ويروس ها مواجه بوده اند . در بررسی انجام شده توسط موسسه تحقيقاتی استراليا ، 33 % درصد از پاسخ دهندگان اعلام نموده اند که مشکل آنان در کمتراز يک روز ، 30 % اعلام نموده اند که مشکل آنان بين يک تا هفت روز و 37 % ديگر اعلام نموده اند که بيش از
يک هفته صرف برطرف نمودن مشکل آنان شده است . ( برخی از سازمان ها و موسسات نيز اعلام نموده اند که مشکل آنان هرگز برطرف نشده است ) .
ميزان صدمات وخرابی گزارش شده در ارتباط با کرم بلستر، بالغ بر 525 ميليون دلار و در ارتباط با سوبيگ ( نوع F ) ، بين 500 ميليون تا يک ميليارد دلار برآورد
شده است.هزينه فوق ، شامل ازدست دادن بهره وری ، ساعات تلف شده ، عدم فروش کالا و يا خدمات و هزينه های اضافی مربوط به پهنای باند است . بر اساس اظهارات ارائه شده در نشريه اکونوميست 23 اگوست 2003 ، سوبيگ (نوع F )، مسئول يکی از شانزده نامه الکترونيکی ارسال شده بر روی اينترنت بوده است . برخی سازمان های بزرگ ، صرفا" طی يک روز بيش از 10،000 نامه الکترونيکی آلوده را دريافت نموده اند ( در هر 6. 8 ثانيه ، يک پيام ) . سوبيگ ، قادر به ارسال چندين نامه الکترونيکی در يک زمان بود و بدين ترتيب ضريب نفوذ و اشاعه آن بشدت بالا بود . ( هزاران پيام در يک دقيقه ) . با توجه به اينکه، سوبيگ چندين مرتبه تغيير و نسخه های جديدتری از آن ارائه می شد، برخورد و غير فعال نمودن آن با مشکل مواجه می گرديد . ( حرف F نشاندهنده نسخه شماره شش سوبيگ است ) .
وضعيت آينده
نتايج و تجارب کسب شده ، صرفا" محدود به عملکرد خاص برخی از کرم ها و ويروس ها نظير بلستر و سوبيگ بوده و ما می بايست به اين واقعيت مهم توجه نمائيم که کرم ها و ويروس ها يک تهديد جدی در رابطه با امنيت اينترنت بوده و می توانند مسائل متعدد و غيرقابل پيش بينی را در آينده برای هر يک از
شهروندان حقوقی و يا حقيقی اينترنت بدنبال داشته باشند .بنابراين می توان اين ادعا را داشت که اينترنت نه تنها در حال حاضر در مقابل اينگونه حملات آسيب پذير است بلکه آسيب پذيری آن در آينده نيز قابل پيش بينی و واقعيتی غيرقابل کتمان است. کامپيوترهای موجود در سازمان ها ، موسسات دولتی و خصوصی ، مراکز تحقيقاتی ، مدارس ، دانشگاه ها در حال حاضر نسبت به ضعف های امنيتی کشف شده آسيب پذير بوده و قطعا" نسبت به ضعف هائی که در آينده
مشخص می گردند، نيز آسيب پذيری خود را خواهند داشت . بنابراين ، سيستم های کامپيوتری هم در مقابل حملات در حال حاضر و هم برای حملات در آينده ، دارای استعداد لازم بمنظور پذيرش آسيب خواهند بود. بديهی است ، همزمان با افزايش وابستگی سازمان ها و موسسات دولتی و خصوصی به اينترنت ، انجام فعاليت های تجاری، تهديدات و خطرات خاص خود را بدنبال خواهد داشت .
محدوديت راه حل های واکنشی
پس از گذشت قريب به پانزده سال از عموميت يافتن اينترنت و مطالعات گسترده انجام شده بمنظور کاهش خطرات ، خرابی و سرعت در تشخيص و غلبه بر حملات ، می توان اين ادعا را نمود که راه حل های واکنشی به تنهائی کافی نخواهند بود. ادعای فوق ، ماحصل توجه به عوامل زير است :
• اينترنت در حال حاضر بيش از 171،000،000 کامپيوتر را بيديگر متصل و رشد آن همچنان ادامه دارد . در حال حاضر ، ميليون ها کامپيوتر آسيب پذير در اينترنت وجود دارد که مستعد يک نوع خاص از حملات توسط مهاجمين می باشند.
• تکنولوژی حملات بسيار پيشرفته شده و مهاجمان می توانند با اتکاء بر آخرين فنآوری ها ی موجود ، بسادگی از نقاط ضعف موجود در سيستم های آسيب پذير استفاده و به آنان آسيب مورد نظر خود را برسانند( حملات مبتنی بر آخرين تکنولوژی موجود ).
• تعداد زيادی از حملات در حال حاضر بصورت کاملا" اتوماتيک عمل نموده و با سرعت بسيار بالائی در اينترنت و صرفنظر از منطقه جغرافيائی ويا محدوديت های ملی ، توزيع و گسترش می يابند.
• تکنولوژی بکارگرفته شده در حملات بسيار پيچيده و در برخی موارد تعمد پنهانی در آنان دنبال می گردد . بنابراين ، کشف و آناليز مکانيزمهای استفاده شده بمنظور توليد پادزهر و برطرف نمودن مشکل ، مستلزم صرف زمان زيادی خواهد بود .
• کاربران اينترنت وابستگی زيادی به اينترنت پيدا کرده و از آن بمنظور انجام کارهای حياتی خود نظير: فعاليت های تجاری Online استفاده می نمايند. کوچکترين وقفه در ارائه خدمات می تواند ازدست دادن منابع اقتصادی و بمخاطره افتادن سرويس های حياتی را بدنبال داشته باشد .
توجه به هر يک از موارد اشاره شده ، شاهدی است بر اين ادعا که ما همچنان در معرض طيف گسترده ای از حملات قرار گرفته ايم . حملاتی که از دست دادن منابع اقتصادی و عدم امکان عرضه سرويس ها را بدنبال خواهد داشت .در اين راستا می بايست از تمامی امکانات و پتانسيل های موجود بمنظور سرعت در پاسخ و برخورد با حملات استفاده نمود. بازنگری در راه حل ها ی موجود و استفاده از رويکردهای علمی و جامع می تواند عاملی موثر در جهت برخورد مناسب با حملات باشد.
وظايف مديران سيستم
شناسائی تهديدات کرم ها و ويروس ها عمليات ساده و ايستائی نبوده و در اين رابطه می بايست از رويکردهای کاملا" پويا و مبتنی بر آخرين دستاوردهای تکنولوژی استفاده گردد. با کشف بيش از چهار هزار نوع نقطه آسيب پذير در طی هر سال ، مديران سيستم و شبکه در وضعيت دشواری قرار دارند . آنان با چالش های جدی در ارتباط با تمامی سيستم ها ی موجود و Patch های مورد نظر که برای برطرف نمودن نقايص امنيتی ارائه می گردد ، مواجه می باشند .
استفاده و بکارگيری Patch ها ی ارائه شده در عين مفيد بودن بمنظور مقابله با مشکل امنيتی ايجاد شده ، می تواند زمينه بروز مسائل و اثرات جانبی غيرقابل پيش بينی را فراهم نمايد . در اين رابطه لازم است به اين نکته مهم نيز اشاره گردد که پس از ارائه يک Patch امنيتی ، مدت زمان زيادی طول خواهد کشيد که مديران سيستم و يا شبکه مشکل تمامی سيستم های آسيب پذير خود را برطرف نمايند. مدت زمان برطرف سازی مشکلات و اشکالات بوجود آمده در برخی موارد می تواند ماه ها ويا حتی سالها پس از ارائه patch پياده سازی شده ،بطول می انجامد . مثلا" هنوز گزاشاتی در رابطه با ويروس مليزا که چهار سال از
فعال شدن آن گذشته است ، توسط برخی سازمان ها و موسسات در سطح جهان ارائه می گردد. ريشه کن نمودن يک کرم و يا ويروس شايع ، با توجه به گستردگی اينترنت ، عملياتی نيست که در يک بازه زمانی محدود، بتوان موفق به انجام آن گرديد ومی بايست برای نيل به موفقيت فوق ، زمان زيادی صرف گردد .
شايد اين سوال مطرح گردد که دلايل اينهمه تاخير در ريشه کن نمودن يک ويروس و يا کرم چيست ؟ در پاسخ می توان به موارد متعددی نظير صرف زمان زياد ، پيچيدگی گسترده آنان و عدم اختصاص اولويت مناسب برای مقابله با آنان در يک سازمان و يا موسسه ، اشاره نمود.متاسفانه ، بسياری از مديران شناخت کامل و جامعی نسبت به تهديدات نداشته و هرگز به مقوله امنيت با يک اولويت سطح بالا نگاه نکرد و حتی منابع لازم را به اين مقوله اختصاص نمی دهند. علاوه بر اين ، سياست های تجاری در برخی موارد سازمان ها را بسمت انتخاب يکی از دو گزينه : اهداف تجاری و نيازهای امنيتی هدايت که در اکثر موارد رسيدن به اهداف تجاری دارای اولويت و جايگاه بالاتری برای آنان می باشند. علاوه بر تمامی مسائل فوق، می بايست به اين نکته مهم نيز اشاره گردد که تقاضا برای مديران سيستم ورزيده و کارشناس بيش ازميزان موجود بوده و همين امر همواره استفاده از متخصصين و کارشناسان امنيتی را با مشکل جدی مواجه می سازد( عدم توازن بين عرضه و تقاضا) .
بمنظور برخورد مناسب با وضعيـت فوق ، مديران سيستم در يک سازمان می توانند با دنبال نمودن مراحل زير عمليات لازم در جهت تسهيل در امر حفاظت سيستم های سازمان را انجام دهند:
• اتخاذ روش های امنيتی .انتخاب سيستم های ارزيابی امنيت اطلاعات ، مديريت سياست ها و تبعيت از روش های امنيتی برای تمامی سازمان ها (بزرگ و کوچک ) امری حياتی است . سازمان ها و موسسات می توانند بر اساس وضعيت موجود خود ، يکی از روش های مناسب امنيتی را انتخاب نمايند. در اين راستا می توان از پتانسيل ها و تجارب بخش دولتی و يا خصوصی استفاده گردد. در اين رابطه می توان از منابع متعدد اطلاع رسانی موجود بمنظور اتخاذ سياست های کلی امنيتی استفاده و پس از بررسی آنان نسبت به تدوين و پياده سازی سياست امنيتی در سازمان مربوطه ، اقدام نمود.