Security

امنیت با اصول طراحی بر پایه OWASP

هزینه های جرایم سایبری هر ساله در حال افزایش است. در هر روز، حدود 780،000 پرونده داده به دلیل نقض امنیت، 33000 پیام فیشینگ جدید و 4000 حمله باج افزار در سطح جهان از بین می رود. تحلیلگران پیش بینی می کنند که کل هزینه های جرایم سایبری در سال 2019 به 2 تریلیون دلار برسد، که این افزایش سه برابری در مقایسه با سال 2015 است. در این مقاله امنیت با اصول طراحی بر پایه OWASP بیان شده است.

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

مجرمان سایبری

اگرچه امنیت وب سایت یا منبع شبکه کاری دشوار است، اما به لطف کارهایی که توسط Open Web Application Security Project (OWASP) انجام شده است، آسانتر شده است. OWASP لیست کاملی از اصول طراحی امنیتی را ارائه می دهد که برنامه نویسان باید آنها را رعایت کنند. پیروی از این اصول اطمینانی ایجاد خواهد کرد که برنامه ایمن بوده و خطر حمله سایبری موفقیت آمیز را کاهش می دهد.

OWASP چیست؟

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

اصول طراحی امنیت OWASP چیست؟

اصول طراحی امنیت OWASP برای کمک به توسعه دهندگان در ساخت برنامه های وب بسیار ایمن ایجاد شده است. اصول طراحی امنیت OWASP به شرح زیر است:

شفاف سازی دارایی

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

اصول طراحی امنیت OWASP

شناختن مهاجمان

برنامه نویسان باید کنترل هایی را برای موارد زیر طراحی کنند تا سوء استفاده از برنامه ها صورت نگیرد:

  • کارکنان و برنامه نویسان ناراضی
  • حملات درایو که ویروس ها یا حملات Trojan را روی سیستم آزاد می کنند
  • تحریک جرائم سایبری
  • سازمان های جنایی با هدف تخریب
  • Kiddies اسکریپت

خطرناک ترین نوع حملاتی که توسعه دهندگان باید آن را کنترل کنند، کارکنان ناراضی و برنامه نویسان هستند. به این دلیل است که آنها معمولاً دسترسی بالایی به سیستم های حساس دارند. برنامه نویسان می توانند از روش های اصولی OWASP برای محافظت در برابر این نوع حملات استفاده کنند.

ارکان اصلی امنیت اطلاعات

OWASP توصیه می کند که کلیه کنترل های امنیتی با رکن اصلی امنیت اطلاعات در نظر گرفته شود:

  • محرمانه بودن: کاربر فقط به داده های مجاز دسترسی داشته باشد.
  • یکپارچگی: اطمینان از اینکه که داده ها توسط کاربران غیر مجاز دستکاری و تغییر نمی یابند.
  • در دسترس بودن: اطمینان از اینکه داده ها در صورت نیاز در دسترس هستند.

در مقاله دیگر در سایت ممتاز سرور می توانید اطلاعات کافی از مثلث سه گانه CIA بدست آورید. همینطور در مقاله ای دیگر در دیدگاه امنیتی وردپرس و ووکامرس نیز به این موضوع پرداخته شده است.

معماری امنیتی

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

آنها توصیه می کنند که توسعه دهندگان باید تمام ویژگی ها را در برنامه مورد نظر خود در نظر بگیرند و سؤالات زیر را بپرسند:

  • آیا روند تا حد امکان ایمن است؟ به عبارت دیگر، آیا این یک روند ناقص است؟
  • اگر من هکر بودم، چگونه می توانستم از این ویژگی سوء استفاده کنم؟
  • آیا ویژگی مورد نیاز به صورت پیش فرض مشخص است؟ اگر چنین است، آیا محدودیت ها یا گزینه هایی وجود دارد که بتواند به کاهش خطر این ویژگی کمک کند؟
معماری امنیتی

با فکر کردن مانند هکر، توسعه دهندگان می توانند راه هایی را که ممکن است افراد مجرمان سایبری و افراد بدخواه در پی حمله به یک برنامه وب باشند، شناسایی کنند. OWASP پیشنهاد می کند که توسعه دهندگان همچنین از روش مدل سازی خطر تهدید STRIDE / DREAD استفاده کنند که توسط بسیاری از شرکت ها استفاده شده است. STRIDE به برنامه نویسان کمک می کند تا تهدیدها را شناسایی کنند و DREAD به برنامه نویسان اجازه می دهد تا تهدیدها را ارزیابی کنند. می توانید اطلاعات بیشتر در مورد STRIDE / DREAD را در اینجا بخوانید.

اصول امنیتی

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

1. میزان حمله را به حداقل برسانید

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

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

2. پیش فرض های امن ایجاد کنید

این اصل بیان می کند که برنامه باید به صورت پیش فرض ایمن باشد. ایجاد پیش فرض های ایمن به این معناست که باید قوانین امنیتی قوی برای نحوه ثبت نام کاربر وجود داشته باشد، باید گذرواژه ها را چندین بار به روز کرد، پسوردهای پیچیده استفاده شود و … . کاربران برنامه ممکن است قادر به خاموش کردن برخی از این ویژگی ها باشند، اما باید به طور پیش فرض در سطح امنیتی بالا تنظیم شوند.

3. اصل امتیاز حداقل

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

4- اصل دفاع عمیق

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

5- شکست امنیت

دلایل بسیاری وجود دارد که چرا یک برنامه وب قادر به پردازش انتقال نیست. شاید اتصال به بانک اطلاعاتی درست انجام نشده یا اطلاعات وارد شده از کاربر نادرست است. این اصل بیان می کند که برنامه ها باید به روشی مطمئن از بین بروند.

اصول امنیتی

6. به خدمات اعتماد نکنید

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

7. تفکیک وظایف

از تفکیک وظایف می توان برای جلوگیری از کلاهبرداری در افراد استفاده کرد. به عنوان مثال، یک کاربر وب سایت تجارت الکترونیک نباید دسترسی مانند یک مدیر داشته باشد، زیرا می تواند سفارشات را تغییر داده و محصولات خود را نیز به آنها ارائه دهد.

8- از امنیت با ابهام خودداری کنید

اصل OWASP بیان می دارد که به امنیت با ابهام هرگز نباید اعتماد کرد. اگر برنامه شما به گونه ای باشد که لازم باشد URL مدیریت آن پنهان باشد تا بتواند ایمن بماند، به هیچ وجه امن نیست. باید کنترل های امنیتی کافی وجود داشته باشد تا بدون مخفی کردن عملکرد اصلی یا کد منبع، برنامه شما ایمن باشد.

9- امنیت را ساده نگه دارید

توسعه دهندگان هنگام تهیه کنترل های امنیتی برای برنامه های خود باید از استفاده معماری بسیار پیشرفته خودداری کنند. داشتن مکانیسم های بسیار پیچیده می تواند خطر خطاها را افزایش دهد.

10. مسائل امنیتی را به درستی حل کنید

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

منتشر شده توسط
f.behjati_server