گام 1 - امنیت در سیستم‌های تحت وب

امنیت در سیستم‌های تحت وب

اهمیت امنیت در برنامه‌های کاربردی تحت وب

یکی از اصول مهمی که همواره پیشنهاد می‌شود در فاز طراحی برنامه کاربردی در نظر گرفته شود، «مدل‌سازی تهدید» است. هدف مدل‌سازی تهدید این است که طراحی و معماری برنامه کاربردی را تحلیل کرده و حوزه‌هایی که پتانسیل آسیب‌پذیری دارند را مشخص کند.» آسیب‌پذیری در شبکه به یک کاربر مخرب اجازه می دهد تا از میزبان وب یا یک برنامه کاربردی بهره‌برداری کند.«آسیب‌پذیری میزبان وب به یک کاربر مخرب اجازه می‌دهد تا از یک شبکه یا یک برنامه کاربردی بهره‌برداری کند.» «آسیب‌پذیری یک برنامه کاربردی به یک کاربر مخرب اجازه می‌دهد تا از شبکه یا میزبان وب بهره برداری کند.»[۸] بنابراین برای ساخت یک برنامه کاربردی تحت وب امن، نیاز به به یک رویکرد جامع امنیت نرم‌افزار است که روی هر سه لایه برنامه کاربردی، میزبان وب و شبکه اعمال شود.

بر اساس آخرین گزارش‌های منتشرشده توسط کنسرسیوم بین المللی «امنیت در برنامه‌ی کاربردی وب» OWASP، بیشترین حملات به نرم‌افزارهای تحت وب عبارتند از Cross-site scripting، SQL injection و Denial-of-service است. اگر فهرست بیشترین مسائل و مشکلات امنیتی برنامه‌های کاربردی تحت وب را مرور و تحلیل کنیم الگویی از مشکلات را شاهد خواهیم بود که با دسته‌بندی آنها در گروه‌های مشخص می‌توان به طور سیستماتیک با آنها مقابله کرد. این طبقه‌بندی‌ها که به عنوان چارچوبی هنگام ارزیابی امنیت نرم‌افزارهای کاربردی تحت وب مورد استفاده قرار می‌گیرند، عبارتند از:

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

بخش‌بندی[۹]: با بخش‌بندی برنامه سطحی از برنامه که ممکن است مورد حمله قرار بگیرد کاهش می‌یابد. از خود بپرسید اگر یک مهاجم به سیستم دسترسی پیدا کرد به چه منابعی دسترسی خواهد داشت؟ آیا مهاجم می‌تواند به منابع شبکه دسترسی پیدا کند؟ چگونه پتانسیل خرابی برنامه را محدود می کنید؟ فایروال و اعطای حداقل مجوز دسترسی مصداق هایی از این اصل هستند.

استفاده از حداقل امتیاز[۱۰]: با اجرای فرایندها توسط حساب‌های کاربری با حداقل حقوق دسترسی‌ها و امتیازها امکان دسترسی مهاجمان به اجرای کدها کاهش می‌یابد.
دفاع در عمق [۱۱]: به این معنی که به یک لایه امنیت اکتفا نشود.
اعتماد نکردن به ورودی کاربر: ورودی کاربران نرم‌افزار اولین سلاح مهاجمان است. فرض کنید همیشه داده‌های ورودی کاربران مخرب هستند مگر اینکه خلاف آن اثبات شود.

کنترل دروازه‌ها [۱۲]: حتما در اولین ورودی کاربران احراز هویت شوند.
شکست امن [۱۳]: اگر برنامه کاربردی از کار بیفتد داده‌های حساس در دسترس قرار نگیرند.
ضعیف‌ترین ارتباط امن شود [۱۴]: اگر در سطح شبکه، میزبان وب یا برنامه کاربردی آسیب‌پذیری وجود دارد، امن شود.

پیش‌فرض‌های امن: حساب‌های کاربری پیش فرض امن و با حداقل دسترسی و به طور پیش فرض غیر فعال باشند.
کاهش سطح تماس با مهاجمان[۱۵]: اگر چیزی را استفاده نمی‌کنید، آن غیر فعال یا حذف کنید.

لزوم به‌کارگیری آزمون‌های استاندارد امنیت

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

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