نقص طراحی – دست زدن به استثنا در برنامه های چند لایه

پردازش خطا و استثنا در برنامه های کاربردی وب می تواند مشکلات امنیتی را، اغلب به شکل انکار سرویس (یعنی زمانی که یک سرویس به دلیل خطا در خطا رخ می دهد) و افشای اطلاعات (یعنی زمانی که یک استثنا حاوی جزئیات حساس در مورد سیستم به کاربر / مهاجم منتقل می شود.

برای مقابله با این، سیستم باید به صورت فریبنده شکست بخورد، جزئیات جزئی در مورد شکست و بازگرداندن تا آنجا که ممکن است. وقتی استثنائات می آید، زبان های مدیریت شده مکانیسم ساده و قابل درک برای مدیریت استثنا هستند. با این حال، در طول تحقیقات من نتوانستم در مورد نحوه ساخت یک مکانیزم مدیریت استثنائی مناسب در برنامه های کاربردی وب مدرن که حاوی چند لایه منطقی بین پایگاه داده و برنامه های کاربردی مشتری است، نتوانستم پیدا کنم.

به عنوان مثال، چارچوب بهار دارای کنترل کننده (که API ها را فراهم می کند و درخواست های HTTP را مدیریت می کند)، سرویس (که شامل اکثریت منطق کسب و کار) و مخازن (که ارتباط بین برنامه و پایگاه داده را مدیریت می کند). علاوه بر این، سرویس می تواند با اجزای سازنده و ماژول هایی که قابلیت های مختلفی دارند (مانند دسترسی به فایل، محاسبه الگوریتم) فراهم شود. نمودار جریان داده های زیر این معماری را نشان می دهد.

 نمودار جریان داده ساده برنامه های کاربردی وب مدرن

با بررسی منشاء استثنائات، می توانیم ببینیم که موتور محاسباتی، مخزن و ابزار دسترسی به پرونده می تواند (به طور بالقوه) برخی از جزئیات در مورد سیستم را نشان می دهد، اگر یک ارتباط با پایگاه داده های مختلف (به عنوان مثال، اطلاعات در مورد پایگاه داده SQL، طرح پایگاه دانش، و غیره)، باید یک استثناء پرتاب شود.

پس از آن سوالات، رسیدگی به این استثنائات و کاهش خطر برای هر دو افشای اطلاعات و انکار سرویس؟

رویکردی که به نظر من مناسب برای من است، استثنائات است، زیرا آنها بوجود می آیند و آنها را به استثنائات خاص برنامه می پردازند. بخش هایی از برنامه هایی که جریان های داده ای را که از مرز اعتماد عبور می کنند (به عنوان مثال، به سیستم فایل، اینترنت) باید همه استثنا ها را با قرار دادن آنها در استثناهای سفارشی "دوستانه" (ایجاد شده توسط توسعه دهندگان) برای جلوگیری از هر گونه خطر افشای اطالعات که بیشتر منتشر می شود، و همچنین برای هر گونه نقص جزئی، محلی سازی می شود.
سپس اجزای داخلی باید بدانند که چگونه استثنا های برنامه را مناسب تر می کنند.

اشکال اصلی این روش این است که مکانیسم مدیریت استثنایی پیچیده تر است، زیرا لازم است استثنائات خاص برنامه برای هر دسته از بومی (و [استثنائات]

آیا این رویکرد دارای مزایا و معایب دیگری است و آیا یک طرح جایگزین وجود دارد که بهترین تعادل امنیتی و کار را در اختیار شما قرار می دهد؟

پشتی پایتون هدف، مترجم پایتون نیست

این سایت از کوکی ها برای ارائه خدمات ما و نمایش آگهی های مرتبط و لیست های شغلی استفاده می کند.
با استفاده از سایت ما، شما تأیید میکنید که ما خط مشی کوکیها، خط مشی رازداری و شرایط خدمات ما را خوانده و درک کردهاید.
استفاده شما از محصولات و خدمات سرریز پشته، از جمله شبکه سرریز پشته، تحت این شرایط و ضوابط است.
                

کدگذاری امن – آیا باید خطای معنی دار خطا را در صورت خطای داخلی وارد کنم؟

کدام عمل بهتر است؟

این به نیازهای شما بستگی دارد. هیچ "امن" یا "غیر امن" وجود ندارد، فقط "به اندازه کافی امن برای نیازهایم" وجود دارد. کدام بهتر است به ریسک و سودمندی خاص شما بستگی دارد. به همین ترتیب، این به ندرت یک سوال قابل پاسخ در یک زمینه امنیتی است.

آیا بازخوانی کدهای خطای داخلی خاص می تواند به حمله کنندگان در تلاش های نفوذ آنها کمک کند؟

احتمالا نه. مطمئنا نباید ردیابی پشته یا مانند آن را بازگردانید، اما توضیح خطای مبهم احتمالا بعید است که به یک مهاجم احتمالی کمک کند. با این حال، توصیف خطای مبهم احتمالا بعید است در طول اشکالزدایی بسیار مفید باشد. در نتیجه من قصد دارم از سوال واضح بپرسم:

آیا شما در سیستم خود وارد نشده اید؟

به عنوان مثال، در تماسهای API من اگر خطایی در تولید وجود داشته باشد، به سادگی بازگشت می دهم (یک JSON سند) که می گوید "خطای داخلی" همراه با یک کد وضعیت 500. این به خوبی برای توسعه دهندگان جلوی ما کار می کند. هنگامی که آنها می بینند که آنها فقط متوقف می شوند و من را ناراحت می کنند؛ زیرا آنها می دانند که مشکل در پایان آنها نیست. به هر حال، من فقط به سیاهههای سرور نگاه میکنم که دقیقا چه اتفاقی برایم میافتاد. هیچ چیزی وجود ندارد که به طور بالقوه برای افراد بیگانه نشت کند و من تمام اطلاعات مربوط به اشکالزدایی را که نیاز به حل هر مشکلی دارد وجود دارد.

به طور خلاصه، به نظر می رسد همان چیزی است که شما نیاز دارید، یک ورودی دقیق است که فقط درون در دسترس است. [19659008]

openssl – دستیابی SSL به صورت متناوب با 502 انجام نشد

من یک مسئله بسیار عجیب و غریب را تجربه می کنم که در آن سرویس من 502 با پیام خطای دستکاری در سرویس پروکسی من (آپاچی) پاسخ می دهد.

با نگاه کردن به سیاهههای مربوط به خطا:

[Mon Apr 30 20:36:02.626518 2018] [ssl:info] [pid 4386] 
    : ] AH02003: اتصال پروکسی SSL شکست خورده است
    [Mon Apr 30 20:36:02.626557 2018] [ssl:info] [pid 4386]  خطا در کتابخانه SSL: خطا: 14094410: روال SSL: SSL3_READ_BYTES: sslv3 هشدار از دست دادن (هشدار شماره 40 SSL)

    [Mon Apr 30 20:36:02.626567 2018] [ssl:info] [pid 4386]  [ازراهدور: ] AH01998: اتصال به کودک 0 با قطع خاموش (میزبان سرور: پورت) بسته شده است
    [Mon Apr 30 20:36:02.626607 2018] [ssl:info] [pid 4386]  [ازراهدور: ] AH01997: دستکاری اس اس ال نتوانست: ارسال 502

این سیاهههای مربوط به apache من است که به عنوان یک سرویس پروکسی معکوس کار می کند

پس از تحقیق بیشتر، من فکر می کردم این ممکن است برخی از موارد عدم هماهنگی پروتکل باشد، اما پروتکل عاقلانه هیچ مسئله ای وجود ندارد.

من همچنین سعی کردم گرفتن یک tcpdump بر روی مشتری من (آپاچی) و بررسی استفاده از wireshark و من در زیر نتایج:

 TCPdump اسیر تصویر با دستاورد اشتباه

سرور پروکسی من من است: 172.18.0.3 و سرویس پراکنده ip است: 10.xxx

من نمی فهمم که چرا دو مرحله در دست گرفتن SSL شکست خورده است.
من کمی اطمینان دارم که این موضوع قطعا در پروکسی سرور نیست.

سرویس پروکسی من خدمات مبتنی بر جاوا مبتنی بر SAP است

FYI، سرور SNI فعال نیست.

مهمتر از همه، این مسئله مانند 4 بار از 600 درخواست اتفاق می افتد.

هر گونه کمک بسیار قدردانی است. با تشکر از قبل.