مقدمه
آیا
شما یک برنامه تحت وب مرکزی توسعه میدهید؟ آیا یک محیط نرم افزاری وسیع
طراحی میکنید؟ آیا برنامه شما n لایه است؟ آیا اجزاء نرم افزار شما روی
ماشین های متعددی اجرا میشوند؟ آیا در مورد اینکه برنامه تان امنیت دارد
یا خیر نگران هستید؟ آیا میخواهید بدانید که چگونه بازرسانی که توسط مشتری
های شما به کار گرفته میشوند امنیت برنامه شما را چگونه ارزیابی میکنند؟
آیا شما درون یک بیمه کیفیت هستید و نیاز دارید تا بدانید که آیا برنامه
ای که در حال ارزیابی آن هستید امن هست یا خیر؟
این مقاله برای پاسخ
دادن به این سوالات نوشته شده است. در این مقاله تلاش بر این شده است که
از پرگویی پرهیز شده و مفاهیم مهم به اختصار بیان شوند.
بخش اول – برنامه تان را امن تر سازید
محافظت در برابر ورودی های ناسالم
تزریق
SQL ( sql injection ) : اگر کوئری های درون کدهای شما مستقیما بر روی
داده های ورودی کاربر اجرا میشوند، کاربر میتواند با وارد کردن ورودی های
ناسالم، امنیت برنامه شما را تهدید کند. مثلا چنانچه کاربر عبارتی مانند
‘A DELETE * FROM VENDORS’ را درون فیلد مربوط به نام شرکت در واسط
کاربری درج کند، ممکن است کد شما در نهایت چیزی شبیه به این از آب در
بیاید: ‘SELECT * FROM VENDORS WHERE VENDORNAME = A DELETE * FROM VENDORS’
فکر میکنم در اینجا خود متوجه عمق فاجعه شده اید !
بناراین همواره برنامه شما میبایست یا ورودی ها را ارزیابی کند یا اینکه از کوئری های پارامتری استفاده نماید.
غلطک
URL (URL tampering) : ارسال برخی اطلاعات نظیر شناسه کاربری از طریق URL
اگرچه میتواند برنامه نویسی را ساده تر سازد اما همواره در خاطر داشته
باشید که یک کاربر هوشمند ممکن است از شناسه کاربری فرد دیگر استفاده
نماید و آن را به صورت دستی درون URL قرار دهد!
ورودی های مستعد خطا :
همواره ورودی های کاربارن را اعتبار سنجی نمایید که آیا در محدوده مورد
نظر قرار دارند یا خیر. ضمنا این که آیا اصلا کاربر چیزی را وارد کرده است
یا خیر به همین اندازه اهمیت دارد.
اسکریپت های ناسالم: اگر برنامه شما
شامل بارگذاری HTML ای از سوی کاربر است اطمینان حاصل نمایید که این ورودی
به هیچ عنوان شامل اسکریپت نباشد. یکی از راه ها میتواند شناسایی و حذف
محتویات درون تگ های script باشد.
درخواستهای تکراری : بر روی سرور خود
محدودیتهایی برای اینکه با چه سرعت و چه تعداد درخواستهایی میتواند از یک
کاربر دریافت کند اعمال کنید. این کار میتواند علیه حملات DOS ( Denial of
Serivce ) تا حدودی محافظت به عمل آورد. دسترسی به برنامه را ایمن سازید
دسترسی به هر صفحه یا
ماژول از برنامه شما میبایست پس از احراز هویت صورت گیرد. مثلا یک کاربر
نباید بتواند با مشخص کردن یک آدرس URL بتواند به یک صفحه به صورت مستقیم
دسترسی داشته باشد.
شما متیوانید از مکانیزم های احراز هویت متعددی
مانند احراز هویت ویندوز، Active directory ، گواهینامه های دیجیتالی یا
منطق احراز هویتی که خود طراحی کرده اید بهره بگیرید.
اطلاعات حساس پیکربندی را رمزنگاری کنید
اکثر مردم از
فایلهای XML، ورودی های رجیستری یا فایلهای متنی خالص برای ذخیره سازی
اطلاعات پیکربندی استفاده میکنند. این مورد را همیشه در نظر داشته باشید
که این اطلاعات میتوانند در معرض چشمان کنجکاو دیگران قرار گیرند. اگر
قرار است اطلاعات مهمی مانند کلمه عبور و شبیه آن را در این فایلها ذخیره
سازید، حتما آن را رمزنگاری کنید.
برقراری امنیت حافظه های ماندگار
همواره دقت داشته
باشید در صورتی که برنامه شما قرار است طالاعات مهمی را روی هارد دیسک یا
هر حافظه جانبی دیگری ذخیره نماید، محل ذخیره شدن این اطلاعات برای هر کسی
قابل دسترسی نباشد و تنها مدیران شبکه و مدیران سیستم بتوانند به این
اطلاعات حساس دسترسی داشته باشند.