در برنامههای .NET، پرتاب استثناها میتواند منجر به آشکار شدن اطلاعات حساس شود که مهاجمان میتوانند از آن سوء استفاده کنند. این مقاله به بررسی محل وقوع این مشکل، خطرات آن و نحوه رفع صحیح آن با استفاده از هر دو روش Host.CreateDefaultBuilder و WebApplication.CreateBuilder میپردازد.
در برنامههای ASP.NET Core که قبل از .NET 6 ایجاد شدهاند، استفاده از WebHost.CreateDefaultBuilder رایج بود. در این سناریو، توصیه میشود از Host.CreateDefaultBuilder استفاده شود. عدم نمایش صفحات خطای دقیق در محیطهای غیر توسعه، از افشای اطلاعات حساس جلوگیری میکند، اما ممکن است جزئیاتی برای اشکالزدایی مورد نیاز باشد.
افزودن صفحه استثنای توسعهدهنده باعث نمایش این صفحه در تمام محیطها، از جمله Production میشود که یک مشکل امنیتی جدی است. این صفحه شامل ردیابی پشته کامل، مقادیر رشته پرس و جو، کوکیها، هدرها و دادههای مسیریابی است که میتواند برای مهاجمان بسیار ارزشمند باشد. راه حل این است که صفحه استثنای توسعهدهنده فقط در محیط Development فعال شود.
در الگوهای جدید ASP.NET Core که از WebApplication.CreateBuilder استفاده میکنند، فراخوانی app.UseDeveloperExceptionPage() اغلب زائد است، زیرا این صفحه به طور پیشفرض فقط در محیط Development فعال است. این اطمینان میدهد که جزئیات استثنا فقط در هنگام توسعه نمایش داده میشوند و از افشای اطلاعات حساس در محیطهای Staging یا Production جلوگیری میکند.
مشاهده مطلب اصلی