حفاظت فايل ها توسط ASP.NET
اين مطلب از طريق سايت شرکت سخاروش در اختيار شما گذاشته شده است .

حفاظت فايل ها توسط ASP.NET

حفاظت فايل ها توسط ASP.NET
در زمان ايجاد يک وب سايت مبتنی بر داده که در آن از بانک اطلاعاتی اکسس استفاده می گردد ،می بايست تدابير لازم در خصوص حفاظت از فايل بانک اطلاعاتی ( فايلی با انشعاب
mdb . ) اتخاذ گردد. در صورتی که فايل mdb . ، در يک دايرکتوری وب و برروی سرويس دهنده وب ، مستقر شده باشد ، افراديکه قادر به تشخيص نام فايل بانک اطلاعاتی می باشند ، می توانند فايل فوق را از طريق مرورگر  download و محتوی آن را مشاهده نمايند. موضوع فوق در مواردی که بانک اطلاعاتی شامل داده هائی حساس نظير رمزهای عبور و اطلاعات شخصی است،بسيار نگران کننده و خطرناک خواهد بود. در اين راستا می توان از روش های متعددی به منظور حفاظت فايل بانک اطلاعاتی اکسس ( و يا هر فايل دلخواه ديگر ) استفاده نمود. يکی از مناسب ترين روش های موجود ، استقرار فايل در يک دايرکتوری با قابليت عدم دستيابی از طريق وب است . اکثر ميزبانان وب ، دارای  فولدری خاص  ( مثلا" با نام Databsae ) می باشند که دارای مجوز لازم ( خواندن ، نوشتن ) به منظور دستيابی به  يک بانک اطلاعاتی اکسس می باشد .( امکان دستيابی به فولدر فوق از طريق وب وجود نخواهد داشت )  .
در اين مقاله با نحوه استفاده از
ASP.NET
به منظور حفاظت فايل های بانک اطلاعاتی اکسس  و يا  فايل هائی با يک انشعاب دلخواه، آشنا می شويم .

نحوه ارتباط  IIS و ASP.NET
پس از دريافت يک درخواست توسط سرويس دهنده وب
IIS ، نوع انشعاب آن بررسی می گردد . با توجه به نوع انشعاب فايل درخواستی ، ممکن است IIS  مستقيما" مسئوليت رسيدگی به درخواست را بر عهده گرفته و يا آن را در اختيار يک ISAPI extension قرار دهد. ISAPI extension ، يک کلاس کمپايل شده است که بر روی سرويس دهنده وب نصب و مسئوليـت آن برگرداندن Markup برای نوع فايل درخواستی ، می باشد.   به صورت پيش فرض ، IIS درخواست را بررسی و بسادگی محتوی فايل درخواست شده را به عنوان پاسخ برمی گرداند. اين موضوع در رابطه با فايل های ايستا نظير فايل های HTML و  CSS  ، صدق می نمايد . مثلا" زمانی که درخواستی برای فايلی با انشعاب html. شده باشد ، IIS  محتوی فايل HTML درخواستی را برای متقاضی ، ارسال می نمايد. برای فايل هائی که محتوی آنان  بصورت پويا توليد می گردد ، يک ISAPI extension پيکربندی و مسئوليت پاسخگوئی به اينچنين درخواست هائی را برعهده می گيرد . مثلا" يک وب سايت که از صفحات کلاسيک ASP استفاده می نمايد ( فايل هائی با انشعاب asp. ) ، اين مسئوليت به يک ISAPI extension با نام asp.dll واگذار شده است . asp.dll ، صفحه asp درخواست شده را اجراء و HTML توليد شده را برمی گرداند . در صورتی که يک وب سايت از صفحات ASP.NET استفاده می نمايد ، IIS ، مسئوليت رسيگی به فايل هائی با انشعاب aspx . را به aspnet_isapi.dll واگذار نموده است (يک ISAPI extension که فرآيند توليد HTML برای صفحه درخواستی ASP.NET را انجام خواهد داد) . aspnet_isapi.dll در فريمورک دات نت اجراء نمی گردد( Unmanaged code ) .زمانی که IIS ، درخواست صفحات aspx . را در اختيار aspnet_isapi.dll قرار می دهد ، ISAPI extension ، درخواست مربوطه را در اختيار ASP.NET engine قرار داده  که کد آن در فريمورک دات نت ، اجراء می گردد.(Managed code ).
ASP.NET engine در بسياری از موارد مشابه IIS عمل نموده و دارای يک دايرکتوری خاص به منظور mapping انشعابات فايل به ISAPI extension مورد نظر می باشد . در چنين مواردی ASP.NET Engine ، انشعابات فايل را به HTTP handler ، مپ می نمايد. کد نوشته شده  HTTP handler ، به صورت managed code  بوده و مسئوليت توليد markup برای يک نوع فايل خاص را برعهده دارد. مثلا" صفحات وب ASP.NET توسط PageHandlerFactory ، بررسی می گردند. PageHandlerFactory ، دارای آگاهی لازم در خصوص نحوه توليد HTML markup يک صفحه ASP.NET می باشد .

بررسی HttpForbiddenHandler
برنامه های وب ASP.NET دارای اطلاعات پيکربندی مشخص شده بر اساس يک  فايل با فرمت XML می باشند : Web.Config .
در فايل فوق ، اطلاعاتی مشابه زير قرار می گيرد :

با توجه به جايگاه بسيار مهم اطلاعات موجود در فايل Web.config ، دستيابی  و مشاهده آن توسط کاربران می تواند بسيار خطرناک و فاجعه آميز باشد .در صورت  دستيابی به محتوی فايل Web.config مربوط به يک برنامه وب ، با پيامی مبنی بر عدم امکان مشاهده اين نوع فايل، مواجه خواهيم شد (This type of page not served) . شايد در اين رابطه سوالات متعددی در ذهن شما ايجاد شده باشد : چرا پس از درخواست مشاهده فايل Web.config ، محتوی آن نمايش داده نشده و در مقابل با يک پيام خاص مواجه خواهيم شد؟ از چه روشی به منظور حفاظت فايل فوق ، استفاده شده است ؟ آيا می توان روش استفاده شده به منظور حفاظت فايل Web.config را به ساير فايل ها نيز تعميم داد ؟
در
IIS ، فايل هائی که دارای انشعاب config. می باشند به ASP.NET ISAPI extension ، مپ شده اند . ASP.NET engine ، درخواست های مربوط به فايل هائی با انشعاب Config. را به HttpForbiddenHandler  ، مپ می نمايد . HttpForbiddenHandler  ، در نهايت HTML لازم در مواردی که قصد مشاهده محتوی   فايل Web.Config
وجود داشته باشد را برمی گرداند. بنابراين با  استفاده از HttpForbiddenHandler  ، امکان حفاظت فايل هائی با انشعاب Config. ، فراهم می گردد. از رويکرد فوق به منظور حفاظت فايل هائی با انشعاب .cs, .vb, .webinfo, .vbproj, .csproj, .resx ، نيز استفاده می شود.با استفاده از روش فوق می توان فايل های بانک اطلاعاتی اکسس ( فايل های با انشعاب mdb. )  و يا هر نوع فايل دلخواه ديگر را حفاظت نمود.

حفاظت فايل های
mdb.
به منظور حفاظت فايل های بانک اطلاعاتی اکسس ، می توان از روش بکارگرفته شده  برای  حفاظت فايل های
Config
. ، استفاده نمود. بدين منظور مراحل  زير می بايست دنبال گردد:

 

خلاصه
در اين مقاله با نحوه استفاده از ASP.NET HTTP handlers به منظور حفاظت فايل هائی با يک انشعاب خاص ، آشنا شديم . بدين منظور لازم است دو مرحله دنبال گردد: در اولين مرحله ، انشعاب فايل در
IIS  به ASP.NET ISAPI extension ، مپ گردد . در مرحله دوم می بايست پيکربندی ASP.NET engine را در خصوص mapping انشعاب مشابه به HttpForbiddenHandler ، نيز انجام داد. به منظور حفاظت يک فايل با انشعاب خاص ، می بايست دو مرحله اشاره شده را انجام داد . در صورتيکه هر يک از مراحل بدرستی پيکربندی نگردد، امکان مشاهده محتوی فايل توسط کاربران وجود خواهد داشت .

منبع :  http://www.4guysfromrolla.com 


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
http://www.srco.
ir