شنبه, ۹ تیر, ۱۴۰۳ / 29 June, 2024
مجله ویستا

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


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

در زمان ایجاد یک وب سایت مبتنی بر داده که در آن از بانک اطلاعاتی اکسس استفاده می گردد ,می بایست تدابیر لازم در خصوص حفاظت از فایل بانک اطلاعاتی فایلی با انشعاب mdb اتخاذ گردد

در زمان ایجاد یک وب سایت مبتنی بر داده که در آن از بانک اطلاعاتی اکسس استفاده می گردد ،می بایست تدابیر لازم در خصوص حفاظت از فایل بانک اطلاعاتی ( فایلی با انشعاب 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. ، استفاده نمود.

▪ بدین منظور مراحل زیر می بایست دنبال گردد:

۱) پیکربندی 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 را انتخاب می نمائیم .

( در مسیر .NetFramework$ )

۲) پیکربندی ASP.NET به گونه ای که فایل هائی با انشعاب mdb . به HttpForbiddenHandler ، مپ گردند .

بدین منظور دستورات زیر به فایل Web.config مربوط به برنامه وب ، اضافه می گردد :

Web.Config File : Just for a Web Application

<httpHandlers>

<add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" />

</httpHandlers>