‌چک‌لیست امنیت وب‌ اپلیکیشن‌ ها

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

در این مقاله می‌خوانیم

چک‌لیست امنیت وب‌ اپلیکیشن ها

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

what is a penetration test in cyber security
تست نفوذ (Penetration Test)

امنیت وب اپلیکیشن‌ ها

امروزه تقریبا تمام رهنما‌های متناظر با امنیت وب‌سایت، استفاده از ممیزی امنیت وب اپلیکیشن‌ را یک بایست حتمی می‌دانند. متخصصان امنیت سایبری سال‌هاست بر نیاز به ممیزی امنیت وب‌سایت تاکید حداکثری دارند. با این حال، تنها در چند سال اخیر بوده که شاهد توجه صاحبان وب‌سایت‌ها به ممیزی امنیت بوده‌ایم؛ دلیل اصلی این چرخش باور، افزایش حملات سایبری به سایت‌ها و چالش با امنیت وب اپلیکیشن‌‌های با امنیت پایین بوده است.

توسعه‌دهندگان وب اپلیکیشن‌ها، تقریبا تمام تمرکز خود را معطوفِ علمکرد اجزای آن‌ها کرده‌اند و اقدامات امنیتی بسیار کمی را مدنظر قرار می‌دهند. واقعیت این است که بحث امنیتی جزء وظایف آن‌ها نیست، پس چرا باید ذهن آن‌ها را مشغول کند؟

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

انواع وب اپلیکیشن‌ ها

وب اپلیکیشن‌های پویاوب اپلیکیشن‌های ایستا
سیستم‌های مدیریت محتوابرنامه‌های کاربردی در تجارت الکترونیک
وب اپلیکیشن‌های متحرکوب اپلیکیشن‌های پورتال
جدول انواع وب‌اپلیکیشن‌ها
application security is an important sub subject in cybersecurity
امنیت اپلیکیشن (Application Security)

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

چک‌لیست ممیزی امنیت وب‌اپلیکیشن

اعتبارسنجی داده‌ها
1اطمینان حاصل کنید که داده‌های دریافتی ماهیت مورد انتظار شما را دارند و همچنین داده‌های بازگردانده شده به کاربران نیز خروجی مطلوب شما را دارا باشند.
2انجام اعتبارسنجی ورودی برای همه ورودی‌های دریافتی (از خطاهای ” سرریز بافر” اجتناب کنید).
3برای جلوگیری از خطاهای زمان‌بندی و ترتیب، Race Condition، بن‌بست‌ها، وابستگی‌های سفارش و خطاهای همگام سازی، از سازگاری ناهمگام اطمینان حاصل کنید.
4برای شرایط خاص از Commit-or-Rollback استفاده کنید.
5عملیات چند-وظیفه‌ای و چند-رشته‌ای را در فضای امن پیاده‌سازی کنید.
6برای داده‌ها مقادیر اولیه تعریف کنید.
7اجتناب یا حذف ” درهای پشتی (Backdoors)”
8اجتناب یا حذف شل اسکیپ‌ها.
9قبل از هر استفاده‌ای، اعتبار فایل‌های پیکربندی را چک کنید.
10قبل از هر چیز، پارامترهای خط فرمان را اعتبارسنجی کنید.
11قبل از هر استفاده، متغیرهای محیطی را اعتبارسنجی کنید.
12مطمئن شوید که صف‌های ارتباطی ظرفیت موردنیاز را دارند.

1. محافظت از داده‌ها

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

محافظت از داده‌ها
1تمام عملکردهایی که به ورودی از جانب کاربر نیاز دارند و به او خروجی ارائه می‌دهند را بررسی کنید تا از حفاظت آن‌ها مطمئن باشید.
2رشته‌هایی که به منبع متصل‌اند باید رمزگذاری شوند.
3داده‌های حساس را هرگز در کدها قرار ندهید.
4کوکی‌هایی که حاوی داده‌های حساس هستند را رمزگذاری کنید.
5داده‌های حساس نباید از صفحه‌ای به صفحه‌ دیگر و از جانب کاربر، منتقل شوند.
6صفحات حاوی داده‌های حساس، فقط در صورت نیاز بازیابی شوند و از نگه‌داشت آن‌ها در کش و حافظه خودداری کنید.
امنیت وب اپلیکیشن: دستی برای محافظت از قفل
امنیت وب‌اپلیکیشن

2. رسیدگی به خطا

مرحله بعدی، رسیدگی به خطا‌ها در امنیت وب‌ اپلیکیشن‌ است:

رسیدگی به خطا
1در تمام عملکردها، وضعیت خطاهای موجود را باید بررسی کرده و اطمینان حاصل کنید که تا نقطه‌ای که اطلاعات کافی به کاربر برسد، خطاهای موجود ایزوله یا برطرف می‌شوند.
2برنامه‌های تولید (برنامه‌های آماده لانچ) نباید پیام‌های خطایی مشابه با مرحله توسعه برنامه را تولید کنند.
3برای هر تابعی که به کاربر خروجی می‌دهد، مطمئن شوید که همه پیام‌های خطا به میزانی به کاربر اطلاعات می‌دهند که از پس ممانعت از خطا بر بیاید.
4هرگز پیام خطایی را که اطلاعاتی درباره سیستم و برنامه‌های اصلی را بروز می‌دهد، به کاربر ارائه ندهید.
5حالت ایمن (safe mode) را پیش‌بینی و در برنامه قرار دهید تا در وضعیت‌های ضروری فعال شود. اگر اتفاقی کاملا غیرمنتظره رخ داد و همه‌چیز با خطا مواجه شد، کاربر را خارج کنید و صفحه مرورگر را ببندید. کدهای محصول، نباید پیام‌های مرتبط با اشکال‌زدایی سیستم را به کاربر بدهد.
6بالاترین میزان امنیت را به فایل‌های گزارش اختصاص بدهید. از این طریق، همیشه یک جعبه سیاه در اختیار دارید که در مواقع ضروری به یاری شما می‌آید.
7انتظار هر نوع حمله‌ای را داشته باشید. هر نقص امنیتی را جدی بگیرید، همیشه دلایل بروز خطا را بررسی کنید و هیچ خطایی را نادیده نگیرید.

برای ارتباطات در امنیت وب‌ اپلیکیشن‌ ها باید به موارد زیر توجه کنید:

امنیت ارتباطات
1مطمئن شوید که داده‌های حساس یا شخصی، هرگز به‌صورت متنی واضح و از طریق رشته‌های URL منتقل نمی‌شوند.
2از به‌روز بودن پیام‌ها اطمینان حاصل کنید؛ حتی یک پیام درست هم می‌تواند در جلوگیری از حمله بعدی، تاثیرگذار باشد.
3برای ردیابی جریان داده، از توابع مشخص شده در “where to start” و همکاری با توسعه‌دهنده استفاده کنید تا از رمزگذاری مناسب اطمینان حاصل کنید.
4برای فراخوانی از پایگاه‌های داده، باید از رویکردهای ذخیره شده پارامتریک استفاده کنند.
5از حالت محرمانه بودن پیام‌ها اطمینان حاصل شود.
application security levels
امنیت اپلیکیشن‌ها

3. احراز هویت

چک‌لیست دیگری که باید برای ارتقای امنیت وب‌ اپلیکیشن‌ ها (محافظت از وب‌ اپلیکیشن‌ها) درنظر گرفت، احزار هویت است:

احراز هویت
1قبل از ارائه هرگونه اطلاعات به افراد، احراز هویت آن‌ها را انجام دهید.
2همه حوزه‌هایی که در آن‌ها، رابط کاربری بین اطلاعات عمومی و خصوصیِ قابل مشاهده تغییر می‌کند را دقیقا مشخص کنید.
3برای دسترسی به محل‌های بسیار مهم از اپلیکیشن و سایت، یا انجام انتقال‌های با ارزش بالا، کاربران را مجددا احراز هویت کنید.
4بیشتر به فکر احراز هویت تراکنش‌ها باشید تا خود کاربر.
5احراز هویت مبتنی بر فرم به شما این امکان را می‌دهد که از یک مولفه کنترلی در دسترس استفاده کنید و خود نیازی به نوشتن آن نداشته باشید.
6استفاده از رویکردهای احراز هویت قدرتمند مثل توکن‌ها، گواهی‌ها و غیره.
مجوز
1هنگام اجرای مجوز در برنامه خود، باید از اصل حداقل امتیاز پیروی کنید.
2فقط تعداد محدودی از کاربرانِ مجاز، باید به رابط‌های مدیریتی مورد استفاده برای مدیریت محتوای سایت و پیکربندی‌ها دسترسی داشته باشند.
3همیشه فهرست‌های کنترل دسترسی را از ” رد کردن همه” شروع کنید، سپس نقش‌ها و امتیازات ضروری را اضافه کنید.
4به محض اینکه سیستم از هویت درست کاربر اطمینان حاصل کرد، وارد مرحله تصمیم‌گیری درباره سطح دسترسی و نمایش سیستم به او می‌شویم. با پیگیری رابط‌های شناسایی شده در مرحله احراز هویت، اکنون به سطح دید یا کنترل قابل دسترس برای او بپردازید و بخش‌هایی که امکان و نیاز ورود او وجود دارد را تعیین کنید. در برنامه‌های بزرگ، معمولا نقش‌ها یا گروه‌ها از قبل تعریف می‌شوند، سپس کاربر برچسب نقش یا گروه خاصی را دریافت می‌کند.
5نقش‌ها می‌توانند انواعی مثل مدیر، مشتری یا تحلیلگر گزارش باشند.
6با همکاری توسعه‌دهنده، نقش‌هایی را که در مسیر طراحی و اجرای برنامه به آن‌ها نیاز هست را شناسایی و دسترسی‌های لازم را تعریف کنید.
7جریان تراکنش را پس از فرآیند احراز هویت دنبال کنید تا نحوه احراز هویت را آزمایش کنید.
امنیت وب اپلیکیشن موضوعی پر اهمیت در امنیت سایبری
امنیت وب‌اپلیکیشن
مدیریت سشن‌ها
1سشن‌ها باید متناظر با نوع کاربر و بازه زمانی باشند.
2اطلاعات متناظر با مجوز تعیین نقش کاربر، باید تنها در سرور ذخیره شوند.
3شناسایی سشن‌ها باید تا سرحد امکان دقیق باشند.
4رشته‌های متناظر با پرسشنامه، نباید حاوی شناسه‌های سشن باشند که معیاری برای تعیین سطح کاربری تعریف شده است.
5مدت زمان مشخصی برای هر سشن تعریف کنید.
6اطلاعات فرم نباید شامل فیلدهای پنهان باشد، اگر پنهان است، پس باید محافظت شده و تنها در سرور نگهداری گردند.

چک‌لیست تست نفوذ در امنیت وب‌ اپلیکیشن

1. جمع‌آوری اطلاعات

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

2. آزمون مدیریت پیکربندی و استقرار در امنیت وب‌ اپلیکیشن

  • آزمون پیکربندی پلتفرم برنامه
  • مدیریت پسوند فایل آزمایشی برای اطلاعات با حساسیت بالا
  • مرور فایل‌های پشتیبان قدیمی و بدون مرجع متناظر با اطلاعات حساس
  • بررسی زیرساخت و رابط‌های مدیریت برنامه
  • آزمودن روش‌های HTTP
  • آزمودن امنیت انتقال دقیق
  • آزمودن رویکردهای دامنه‌های متقابل RIA
  • آزمودن مجوزها
  • آزمودن تصاحب زیردامنه (Subdomain)
  • آزمودن فضای ذخیره ابری

آزمون مدیریت هویت در محافظت وب‌ اپلیکیشن

  • تعاریف متناظر با نقش آزمون
  • آزمون فرآیند ثبت‌نام کاربر
  • فرآیند تهیه حساب آزمایشی
  • آزمونی برای شمارش حساب و حساب‌های قابل‌حدس
  • آزمون بررسی نام کاربری ضعیف یا غیرقابل پذیرش

3. آزمون احراز هویت در امنیت وب‌ اپلیکیشن

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

4. آزمون مجوز

  • آزمایش فایل پیمایش دایرکتوری
  • آزمایش امکان دور زدن قواعد در مرحله ارائه مجوزها
  • آزمون مرحله افزایش امتیاز
  • آزمایش برای ایمن‌سازی ارجاعات مستقیم ناامن

5. آزمون مدیریت سشن در امنیت وب‌ اپلیکیشن

  • آزمایش رویکرد مورد استفاده در مدیریت سشن‌ها
  • آزمون ویژگی‌های کوکی‌ها
  • آزمون تصحیح سشن‌ها
  • آزمایش متناظر با متغیرهای سشن در معرض دید
  • آزمون جعل درخواست‌های ارائه شده به سایت
  • آزمون عملکرد خروج
  • آزمون زمان پایان سشن‌ها
  • آزمون میزان پیچیدگی سشن‌ها
web application security advice for security managers
پیشنهادات لازم برای امنیت وب‌ اپلیکیشن ها

6. آزمون اعتبارسنجی ورودی‌ها در امنیت وب‌ اپلیکیشن

  • آزمایش اسکریپت نویسی متقابل سایت
  • آزمون اسکریپت‌های متقابل سایت که باید ذخیره شوند
  • آزمون دستکاری فعل HTTP
  • آزمون میزان آلودگی پارامتر HTTP
  • آزمون ورود SQL
  • آزمون اوراکل
  • آزمون MySQL
  • آزمون سرور SQL
  • آزمون PostgreSQL
  • آزمونی برای MS Access
  • آزمونی برای NoSQL Injection
  • آزمونی برای ورود ORM
  • آزمون برای وضعیت سمت مشتری
  • آزمونی برای ورود LDAP
  • آزمونی برای ورود XML
  • آزمونی برای ورود SSL
  • آزمونی برای ورود XPath
  • آزمون تزریق SMTP IMAP
  • آزمونی برای ورود کد
  • آزمونی برای گنجاندن فایل‌های محلی
  • آزمون بارگزاری فایل‌ها از راه‌دور
  • آزمونی برای Command Injection
  • آزمون سرریز بافر
  • آزمون سرریز هیپ
  • آزمون سرریز پشته
  • آزمون رشته قالب
  • آزمون آسیب‌پذیری‌های پنهان
  • آزمون امکان قاچاق HTTP Splitting
  • آزمایشی برای درخواست‌های ورودی HTTP
  • آزمون تزریق سربرگ میزبان
  • آزمونی برای بررسی ورود قالب‌ها از طرف سرور

7. تست نحوه رسیدگی به خطاها

  • آزمون کد خطا
  • آزمایشی برای Stack Traces

8. آزمون ضعف در رمزگزاری در امنیت وب‌ اپلیکیشن

  • آزمونی برای سنجش رمزهای ضعیف SSL TLS حمل‌و‌نقل ناکافیِ محافظت از لایه‌ها
  • آزمونی برای Padding Oracle
  • آزمایش اطلاعات حساس ارسال شده از طریق‌ کانال‌های رمزگذاری‌نشده
  • آزمونی برای رمزگذاری ضعیف

9. تست منطق کسب ‌و ‌کار در محافظت وب‌ اپلیکیشن

  • مقدمه‌ای بر منطق کسب ‌و ‌کار
  • آزمون اعتبارسنجی داده‌های منطق کسب و کار
  • آزمودن امکان جعل درخواست‌ها
  • بررسی یکپارچگی آزمون
  • آزمون زمانبندی فرآیند
  • آزمون محدودیت موجود در تعداد دفعاتی که یک تابع می‌تواند استفاده شود
  • آزمون امکان دور زدن جریان کار
  • آزمان سطح محافظت از برنامه در برابر سوء استفاده
  • آزمون امکان آپلود انواع فایل‌های غیرمنتظره
  • آزمون امکان آپلود فایل‌های مخرب

10. آزمون‌های سمت مشتری

  • آزمون اسکریپت نویسی متقاطع سایت مبتنی بر DOM
  • آزمون اجرای جاوا اسکریپت
  • آزمونی برای ورود HTML
  • آزمون تغییر مسیر URL از سمت مشتری
  • آزمون ورود CSS
  • آزمایشی برای دستکاری منابع سمت مشتری
  • آزمون اشتراک گذاری منابع متقاطع
  • آزمونی برای فلش سایت متقابل
  • آزمون کلیک جک
  • آزمون WebSockets
  • آزمون پیام‌رسانی وب
  • آزمون فضای ذخیره‌سازی مرورگر
  • آزمون میزان گنجایش اسکریپ متقابل سایت
ابزاهای تست امنیت وب اپلیکیشن ها
ابزارهای امنیت وب‌ اپلیکیشن

ابزارهایی که می‌توانید در امنیت وب‌ اپلیکیشن استفاده کنید

  1. پروکسی حمله Zed
  2. Nikto
  3. NMap نقشه شبکه
  4. BurpSuite
  5. Netsparker
  6. SQLMap
  7. W3af
  8. TestSSL
  9. Archni
  10. Wapiti
  11. Metasploit
  12. Acunetix
  13. Grabber
  14. Ratproxy
  15. Wfuzz
پیمایش به بالا