پردازش خطا و استثنا در برنامه های کاربردی وب می تواند مشکلات امنیتی را، اغلب به شکل انکار سرویس (یعنی زمانی که یک سرویس به دلیل خطا در خطا رخ می دهد) و افشای اطلاعات (یعنی زمانی که یک استثنا حاوی جزئیات حساس در مورد سیستم به کاربر / مهاجم منتقل می شود.
برای مقابله با این، سیستم باید به صورت فریبنده شکست بخورد، جزئیات جزئی در مورد شکست و بازگرداندن تا آنجا که ممکن است. وقتی استثنائات می آید، زبان های مدیریت شده مکانیسم ساده و قابل درک برای مدیریت استثنا هستند. با این حال، در طول تحقیقات من نتوانستم در مورد نحوه ساخت یک مکانیزم مدیریت استثنائی مناسب در برنامه های کاربردی وب مدرن که حاوی چند لایه منطقی بین پایگاه داده و برنامه های کاربردی مشتری است، نتوانستم پیدا کنم.
به عنوان مثال، چارچوب بهار دارای کنترل کننده (که API ها را فراهم می کند و درخواست های HTTP را مدیریت می کند)، سرویس (که شامل اکثریت منطق کسب و کار) و مخازن (که ارتباط بین برنامه و پایگاه داده را مدیریت می کند). علاوه بر این، سرویس می تواند با اجزای سازنده و ماژول هایی که قابلیت های مختلفی دارند (مانند دسترسی به فایل، محاسبه الگوریتم) فراهم شود. نمودار جریان داده های زیر این معماری را نشان می دهد.
با بررسی منشاء استثنائات، می توانیم ببینیم که موتور محاسباتی، مخزن و ابزار دسترسی به پرونده می تواند (به طور بالقوه) برخی از جزئیات در مورد سیستم را نشان می دهد، اگر یک ارتباط با پایگاه داده های مختلف (به عنوان مثال، اطلاعات در مورد پایگاه داده SQL، طرح پایگاه دانش، و غیره)، باید یک استثناء پرتاب شود.
پس از آن سوالات، رسیدگی به این استثنائات و کاهش خطر برای هر دو افشای اطلاعات و انکار سرویس؟
رویکردی که به نظر من مناسب برای من است، استثنائات است، زیرا آنها بوجود می آیند و آنها را به استثنائات خاص برنامه می پردازند. بخش هایی از برنامه هایی که جریان های داده ای را که از مرز اعتماد عبور می کنند (به عنوان مثال، به سیستم فایل، اینترنت) باید همه استثنا ها را با قرار دادن آنها در استثناهای سفارشی "دوستانه" (ایجاد شده توسط توسعه دهندگان) برای جلوگیری از هر گونه خطر افشای اطالعات که بیشتر منتشر می شود، و همچنین برای هر گونه نقص جزئی، محلی سازی می شود.
سپس اجزای داخلی باید بدانند که چگونه استثنا های برنامه را مناسب تر می کنند.
اشکال اصلی این روش این است که مکانیسم مدیریت استثنایی پیچیده تر است، زیرا لازم است استثنائات خاص برنامه برای هر دسته از بومی (و [استثنائات]
آیا این رویکرد دارای مزایا و معایب دیگری است و آیا یک طرح جایگزین وجود دارد که بهترین تعادل امنیتی و کار را در اختیار شما قرار می دهد؟