حفاظت فايل ها توسط ASP.NET
در زمان ايجاد يک وب سايت مبتنی بر داده که در آن از بانک اطلاعاتی اکسس استفاده می گردد ،می بايست تدابير لازم در خصوص حفاظت از فايل بانک اطلاعاتی ( فايلی با انشعاب mdb . ) اتخاذ گردد. در صورتی که فايل mdb . ، در يک دايرکتوری وب و برروی سرويس دهنده وب ، مستقر شده باشد ، افراديکه قادر به تشخيص نام فايل بانک اطلاعاتی می باشند ، می توانند فايل فوق را از طريق مرورگر download و محتوی آن را مشاهده نمايند. موضوع فوق در مواردی که بانک اطلاعاتی شامل داده هائی حساس نظير رمزهای عبور و اطلاعات شخصی است،بسيار نگران کننده و خطرناک خواهد بود. در اين راستا می توان از روش های متعددی به منظور حفاظت فايل بانک اطلاعاتی اکسس ( و يا هر فايل دلخواه ديگر ) استفاده نمود. يکی از مناسب ترين روش های موجود ، استقرار فايل در يک دايرکتوری با قابليت عدم دستيابی از طريق وب است . اکثر ميزبانان وب ، دارای فولدری خاص ( مثلا" با نام Databsae ) می باشند که دارای مجوز لازم ( خواندن ، نوشتن ) به منظور دستيابی به يک بانک اطلاعاتی اکسس می باشد .( امکان دستيابی به فولدر فوق از طريق وب وجود نخواهد داشت ) .
در اين مقاله با نحوه استفاده از ASP.NET به منظور حفاظت فايل های بانک اطلاعاتی اکسس و يا فايل هائی با يک انشعاب دلخواه، آشنا می شويم .
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 می باشد .
• رشته های اتصال به بانک اطلاعاتی
• اطلاعاتی در رابطه با نحوه تائيد کاربران و ليست نام و رمز عبور آنان ( در صورت ضرورت)
• اطلاعات مربوط به مجوزها و ساير اطلاعات حساس
با توجه به جايگاه بسيار مهم اطلاعات موجود در فايل 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. ) و يا هر نوع فايل دلخواه ديگر را حفاظت نمود.
• پيکربندی 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 مربوط به برنامه وب ، اضافه می گردد :
• <httpHandlers> می بايست درون المان <system.web> ، قرار گيرد .
افزودن بخش <httpHandlers> به يک فايل Web.Config باعث می شود که فايل هائی با انشعاب mdb. به HttpForbiddenHandler مربوط به يک برنامه وب مپ گردند ، در صورتی که قصد استفاده از mapping فوق را در تمامی برنامه های وب ASP.NET موجود بر روی سرويس دهنده وب داشته باشيم ، ، می توان کد زيررا به بخش <httpHandlers> مربوط به فايل machine.config اضافه نمود ( فايل machine.config در دايرکتوری $WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$\CONFIG قرار دارد ).
منبع:http://www.4guysfromrolla.com
در اين مقاله با نحوه استفاده از ASP.NET به منظور حفاظت فايل های بانک اطلاعاتی اکسس و يا فايل هائی با يک انشعاب دلخواه، آشنا می شويم .
نحوه ارتباط IIS و ASP.NET
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
• رشته های اتصال به بانک اطلاعاتی
• اطلاعاتی در رابطه با نحوه تائيد کاربران و ليست نام و رمز عبور آنان ( در صورت ضرورت)
• اطلاعات مربوط به مجوزها و ساير اطلاعات حساس
با توجه به جايگاه بسيار مهم اطلاعات موجود در فايل 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.
• پيکربندی 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> |
• <httpHandlers> می بايست درون المان <system.web> ، قرار گيرد .
افزودن بخش <httpHandlers> به يک فايل Web.Config باعث می شود که فايل هائی با انشعاب mdb. به HttpForbiddenHandler مربوط به يک برنامه وب مپ گردند ، در صورتی که قصد استفاده از mapping فوق را در تمامی برنامه های وب ASP.NET موجود بر روی سرويس دهنده وب داشته باشيم ، ، می توان کد زيررا به بخش <httpHandlers> مربوط به فايل machine.config اضافه نمود ( فايل machine.config در دايرکتوری $WINDOWS_DIR$\Microsoft.Net\Framework\$VERSION$\CONFIG قرار دارد ).
Machine.config File : All Web Application on the web server |
<httpHandlers> |
خلاصه
منبع:http://www.4guysfromrolla.com