خلاصه اجرایی

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

# امنیت نرم افزار اختصاصی؛ ۱۴ اصل برای ساخت یک سیستم امن

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

یک نرم افزار ممکن است از نظر ظاهری بسیار حرفه‌ای باشد و تمام قابلیت‌های مورد نیاز کسب‌وکار را نیز داشته باشد، اما اگر دسترسی کاربران، APIها، دیتابیس، فایل‌ها، Sessionها یا Backup آن به‌درستی مدیریت نشوند، کل سیستم می‌تواند به نقطه‌ای پرریسک تبدیل شود.

اهمیت این موضوع زمانی بیشتر می‌شود که نرم افزار اطلاعاتی مانند:

  • مشخصات مشتریان
  • شماره تماس
  • قراردادها
  • اطلاعات مالی
  • فایل‌های محرمانه
  • سوابق فعالیت کاربران
  • اطلاعات کارکنان
  • داده‌های تجاری

را نگهداری کند.

در این راهنما مهم‌ترین اصول امنیت نرم افزار اختصاصی را از معماری اولیه تا استقرار و نگهداری بررسی می‌کنیم.

امنیت نرم افزار اختصاصی یعنی چه؟

امنیت نرم افزار فقط به این معنی نیست که کاربر یک رمز عبور قوی داشته باشد.

یک سیستم امن باید در چند لایه محافظت شود.

برای مثال:

  • چه کسی می‌تواند وارد سیستم شود؟
  • بعد از ورود چه اطلاعاتی می‌تواند مشاهده کند؟
  • آیا APIها سطح دسترسی را کنترل می‌کنند؟
  • اطلاعات حساس چگونه ذخیره می‌شوند؟
  • فایل‌های خصوصی چه کسانی قابل مشاهده‌اند؟
  • فعالیت‌های مهم کاربران ثبت می‌شوند؟
  • اگر سرور از دسترس خارج شود، Backup وجود دارد؟
  • در صورت خطا چگونه متوجه مشکل می‌شویم؟

امنیت واقعی حاصل مجموعه‌ای از تصمیم‌های معماری، توسعه و عملیاتی است.

چرا امنیت باید از مرحله طراحی شروع شود؟

یکی از اشتباهات رایج این است که تیم ابتدا تمام قابلیت‌ها را توسعه دهد و در پایان پروژه به Security فکر کند.

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

در یک فرایند حرفه‌ای طراحی نرم افزار اختصاصی، امنیت باید هم‌زمان با:

  • طراحی معماری
  • طراحی دیتابیس
  • طراحی Permission
  • API
  • مدیریت فایل
  • زیرساخت

در نظر گرفته شود.

این رویکرد معمولاً با مفهوم Security by Design شناخته می‌شود.

۱. احراز هویت امن

Authentication مشخص می‌کند کاربر واقعاً همان فردی است که ادعا می‌کند.

سیستم‌های اختصاصی ممکن است از روش‌های مختلف استفاده کنند: