توصیه هایی که در این مطلب مطرح می شوند بر پایه اصول امنیتی است که در گذر زمان کارایی خود را نشان داده اند. امنیت همانند بیشتر جنبه های مهندسی نرم افزار بر پایه رهیافت هایی بر پایه اصولی است که اصول اصلی بدون ارتباط با پیاده سازی تکنولوژی یا نرم افزار اعمال می شوند.
در ادامه اصول اصلی امنیت برای برنامه های تحت وب معرفی می گردند.ازوله کردن و طبقه بندی کردن قسمتهای مختلف در درگاه بانک و یا نرم افزارهای تحت وب، سطح یک حمله را پایین می آورد. از خود بپرسید که چگونه میتوانید یک مشکل داشته باشید. بعبارتی برای امن کردن هر نرم افزار خود ابتدا باید هکر بود تا راه های نفوذ هکرها را بست که دوره CEH هکرهای قانونمند یا کلاه سفید را آموزش و تربیت می کند. باید در طراحی نرم افزار از خود بپرسید که اگر یک مهاجم به نرم افزار شما دسترسی پیدا کند به چه منابعی دسترسی پیدا خواهد رکد؟ آیا مهاجم میتواند به منابع شبکه دسترسی پیدا کند؟ چگونه میتوان اثر تخریبی را کاهش داد؟ دیواره های آتش، حسابهای کاربری یا اختیارات کم و کدی با اختیارات کمتر مثالهایی از طبقه بندی کردن و ایزوله کردن می باشند.
- در طراحی سایت یا نرم افزار تحت وب، به ورودی کاربر اعتماد نباید کرد: ورودی کاربر در برنامه شما، اسلحه اصلی مهاجم- وقتی که هدفش نرم افزار شما است – می باشد. تصور کنید که تمامی ورودی ها غیر قابل اعتماد و خطرناک هستند. مگر این که خلاف آن ثابت شود. یک استراتژی دفاع عمیق برای هویت سنجی ورودی انجام دهید و پیش گیری هایی برای اطمینان از معتبربودن ورودی قبل از انجام کارهای حساس انجام دهید.
- در طراحی سایت یا نرم افزار تحت وب خویش نقاط آسیب پذیر را شناسایی و آنها را امن کنید: آیا نقطه ضعفی در لایه شبکه وجود دارد که میتواند یک مهاجم از آن استفاده نماید؟ در مورد میزبان چطور؟ آیا برنامه شما امن است؟ هر لینک ضعیفی در یک زنجیره باعث پایین امدن امنیت می شود.
- از اختیارات کمتری برای اجرای فرایندها استفاده کنید: این کار باعث پایین آمدن محدوده کارهایی می شود که یک مهاجم میتواند انجام دهد. با این کار محدوده پایین تری از کدها در معرض تهدید خواهند بود.
- تنظیمات پیش فرض امنی را ایجاد کنید: آیا حساب پیش فرض با کمترین اختیارات ایجاد شده است؟ آیا حساب پیش فرض غیر فعال شده است و فقط در موارد مورد نیاز به صورت دستی فعال می شود؟ آیا تنظیمات از یک رمز عبور متنی استفاده می کنند؟ در زمان رخ دادن خطا،آیا اطلاعات حساس به کلاینت نشان داده می شوند؟
- ورودی را همواره چک کنید: هویت سنجی و حق دسترسی سریع و در اولین فرصت بررسی کنید. اگر یک نرم افزار نتوانست به کار خود ادامه دهد، به صورت امنی این کار را پردازش کنیدو داده های حساس را در دسترس قرار ندهید و مشخصات سیستم را که میتوانند برای مهاجم مفید باشند نشان ندهید.
- دفاع را عمیقا اعمال کنید: برای دور نگه داشتن مهاجمان، از چند Gatekeeper ( قسمتی از مدیریت شبکه که وظیفه اش کنترل کردن دسترسی ها است ) استفاده نمایید. دفاع عمیق یعنی این که به یک لایه امنیتی اعتماد نکنیدو تصور کنید که یکی از لایه های شما ممکن است مقاومت نکند و از بین برود.
- پردازش امن خطا : اگر یک نرم افزار نتوانست به کار خود ادامه بدهد، به صورت امنی این کار را پردازش کنید و داده های حساس را در دسترس قرار ندهید. پیام های خطای محترمانه ای به کاربران نشان دهید و مشخصات سیستم را که میتوانند برای مهاجم مفید باشند را نشان ندهید.