حفاظت فايل ها توسط ASP.NET
در زمان ايجاد يک وب سايت مبتنی بر داده که در آن از بانک اطلاعاتی اکسس استفاده می گردد ،می بايست تدابير لازم در خصوص حفاظت از فايل بانک اطلاعاتی ( فايلی با انشعاب mdb . ) اتخاذ گردد. در صورتی که فايل mdb . ، در يک دايرکتوری وب و برروی سرويس دهنده وب ، مستقر شده باشد ، افراديکه قادر به تشخيص نام فايل بانک اطلاعاتی می باشند.موضوع فوق در مواردی که بانک اطلاعاتی شامل داده هائی حساس نظير رمزهای عبور و اطلاعات شخصی است،بسيار نگران کننده و خطرناک خواهد بود. در اين راستا می توان از روش های متعددی به منظور حفاظت فايل بانک اطلاعاتی اکسس ( و يا هر فايل دلخواه ديگر ) استفاده نمود. يکی از مناسب ترين روش های موجود ، استقرار فايل در يک دايرکتوری با قابليت عدم دستيابی از طريق وب است . اکثر ميزبانان وب ، دارای فولدری خاص ( مثلا" با نام 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. ، استفاده نمود. بدين منظور مراحل زير می بايست دنبال گردد:
· پيکربندی IIS بگونه ای که فايل هائی با انشعاب mdb . به ASP.NET ISAPI extension مپ گردند.
به منظور پيکربندی IIS در جهت mapping فايل هائی با انشعاب mdb. به ASP.NET ISAPI Extension ، می بايست امکان دستيابی فيزيکی به سرويس دهنده وب ، وجود داشته باشد. پس از دستيابی به سرويس دهنده ، برنامه مديريتی IIS را فعال ( از طريق منوی Administrative Tools ) و بر روی وب سايت مورد نظر کليک سمت راست نموده و گزينه Properties را انتخاب می نمائيم . در ادامه Home Directory Tab را انتخاب و پس از فعال نمودن دکمه Configuration ، جعبه محاوره ای Application Configuration ، نمايش داده می شود.
برای افزودن يک mapping جديد ، بر روی Add button ، کليک می نمائيم .در ادامه شاهد نمايش يک جعبه محاوره ای جديد خواهيم بود که امکان درج يک ISAPI extension جديد را فراهم می نمايد. در اين رابطه می توان حوزه عملکرد mapping را مشخص نمود ( تمامی درخواست های HTTP و يا صرفا" يک نوع خاص HTTP ). برای افزودن يک mapping برای فايل هائی با انشعاب mdb . ، مقدار mdb. را به عنوان extension وارد نموده و aspnet_isapi.dll ISAPI extension را انتخاب می نمائيم .
( در مسير $WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$ )
· پيکربندی ASP.NET به گونه ای که فايل هائی با انشعاب mdb . به HttpForbiddenHandler ، مپ گردند .
بدين منظور دستورات زير به فايل Web.config مربوط به برنامه وب ، اضافه می گردد :
Web.Config File : Just for a Web Application
·<httphandlers>می بايست درون المان <system.web>، قرار گيرد .
افزودن بخش <httphandlers>به يک فايل Web.Config باعث می شود که فايل هائی با انشعاب mdb. به HttpForbiddenHandler مربوط به يک برنامه وب مپ گردند ، در صورتی که قصد استفاده از mapping فوق را در تمامی برنامه های وب ASP.NET موجود بر روی سرويس دهنده وب داشته باشيم ، ، می توان کد زيررا به بخش مربوط به فايل machine.config اضافه نمود ( فايل machine.config در دايرکتوری $WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$\CONFIG قرار دارد ).
Machine.config File : All Web Application on the web server
خلاصه
در اين مقاله با نحوه استفاده از ASP.NET HTTP handlers به منظور حفاظت فايل هائی با يک انشعاب خاص ، آشنا شديم . بدين منظور لازم است دو مرحله دنبال گردد: در اولين مرحله ، انشعاب فايل در IIS به ASP.NET ISAPI extension ، مپ گردد. در مرحله دوم می بايست پيکربندی ASP.NET engine را در خصوص mapping انشعاب مشابه به HttpForbiddenHandler ، نيز انجام داد. به منظور حفاظت يک فايل با انشعاب خاص ، می بايست دو مرحله اشاره شده را انجام داد . در صورتيکه هر يک از مراحل بدرستی پيکربندی نگردد، امکان مشاهده محتوی فايل توسط کاربران وجود خواهد داشت.