KavLabs
خانهبلاگ
KavLabs

یادداشت‌هایی از ذهن‌های کاوشگر، برای ذهن‌های کنجکاو

پرهام·پرهام·زال·زال·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
نوشته‌هادسته‌بندی‌هاجستجوی پیشرفتهلاگ تغییرات

©۲٬۰۲۶ KavLabs — تمام حقوق محفوظ است

ساخته‌شده با عشق توسط پرهام و زال

واژه‌نامه
۰۷ اسفند ۱۴۰۴مبانی وبمبتدیزبان: فارسی

رابط برنامه‌نویسی کاربردی(API)

مبتدینسخه انگلیسی

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

apirestنقطه-پایانیوبیکپارچه‌سازی

تعریف کوتاه

API مثل منوی رستوران برای برنامه‌نویسان است. به جای سفارش غذا، از یک برنامه می‌خواهی کاری انجام دهد: "داده کاربر را به من بده"، "این را ذخیره کن"، "آن را حذف کن." API مشخص می‌کند چه چیزی می‌توانی درخواست کنی و چطور درخواست کنی.

تعریف کامل

یک API (رابط برنامه‌نویسی کاربردی) یک قرارداد بین اجزای مختلف نرم‌افزاری است که نحوه ارتباط آنها را مشخص می‌کند. APIهای وب مدرن معمولاً:

مفاهیم کلیدی:

  • نقاط پایانی: URLهای مشخص برای توابع مختلف
  • متدها: افعال HTTP (GET، POST، PUT، DELETE)
  • درخواست: چیزی که ارسال می‌کنید (پارامترها، بدنه)
  • پاسخ: چیزی که دریافت می‌کنید (معمولاً JSON)

مثال:

bash
1GET /api/users/123
2← داده کاربر را برمی‌گرداند
3
4POST /api/users
5← کاربر جدید ایجاد می‌کند
6
7DELETE /api/users/123
8← کاربر را حذف می‌کند

انواع رایج API:

  • REST: از متدهای HTTP استفاده می‌کند، بدون حالت
  • GraphQL: دقیقاً آنچه نیاز دارید پرس‌وجو کنید
  • SOAP: مبتنی بر XML، سخت‌گیرانه‌تر
  • WebSocket: بلادرنگ، دوطرفه

چرا مهم است

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

چگونه مهاجمان از آن استفاده می‌کنند

حملات رایج API:

  1. احراز هویت شکسته: احراز هویت ضعیف یا وجود ندارد
  2. مجوزدهی شکسته: دسترسی به داده‌های سایر کاربران
  3. افشای بیش از حد داده: API اطلاعات زیادی برمی‌گرداند
  4. مشکلات محدودیت نرخ: حملات brute force
  5. تخصیص انبوه: تغییر فیلدهایی که باید محافظت شوند
  6. SSRF از طریق API: API URLهای خارجی را واکشی می‌کند
  7. تزریق: تزریق SQL/دستور از طریق پارامترها

مثال حمله:

bash
1# نقطه پایانی API
2GET /api/users/123
3
4# حمله IDOR (تغییر ID)
5GET /api/users/456 # دسترسی به داده کاربر دیگر

چگونه تشخیص یا پیشگیری کنیم

پیشگیری:

  • پیاده‌سازی احراز هویت مناسب (OAuth 2.0، JWT)
  • اعتبارسنجی همه ورودی‌ها
  • اعمال محدودیت نرخ
  • استفاده از دروازه‌های API
  • نسخه‌بندی مناسب API
  • مستندسازی الزامات امنیتی
  • هرگز شناسه‌های داخلی را مستقیماً暴露 نکنید
  • حداقل داده مورد نیاز را برگردانید

تشخیص:

  • ثبت تمام درخواست‌های API
  • نظارت بر الگوهای غیرعادی:
    • فرکانس بالای درخواست
    • شمارش متوالی ID
    • دسترسی غیرمجاز به نقاط پایانی
    • مقادیر پارامتر مشکوک
  • استفاده از ابزارهای امنیتی API (42Crunch, Salt Security)
  • پیاده‌سازی تشخیص ناهنجاری

باورهای غلط رایج

  • "APIها فقط برای سرویس‌های عمومی هستند" - بیشتر آنها داخلی هستند
  • "احراز هویت یعنی مجوزدهی" - دو چیز متفاوت هستند
  • "محدودیت نرخ امنیت را حل می‌کند" - کمک می‌کند اما کافی نیست
  • "کلیدهای خصوصی API ایمن هستند" - می‌توانند نشت کنند/دزدیده شوند
  • "API == REST" - REST یکی از انواع است

مثال واقعی

شکست حریم خصوصی API Venmo (۲۰۱۹)

مشکل: API عمومی افشا کرد:

  • تمام تراکنش‌ها (مبالغ، شرکت‌کنندگان)
  • بدون نیاز به احراز هویت
  • امکان استخراج میلیون‌ها تراکنش
  • روابط مالی را آشکار کرد

آسیب‌پذیری‌های API Uber (۲۰۱۶)

مسائل یافت شده:

  • نقاط پایانی مسافران بدون احراز هویت مناسب قابل دسترسی بودند
  • می‌توانست تاریخچه سفر سایر کاربران را بازیابی کند
  • تخصیص انبوه امکان افزایش امتیاز را فراهم کرد
  • منجر به نقض داده ۵۷ میلیون حساب شد

OWASP API Top 10 (۲۰۲۳):

  1. شکسته مجوز سطح شی (IDOR)
  2. احراز هویت شکسته
  3. شکسته مجوز سطح ویژگی شی
  4. مصرف منابع بدون محدودیت
  5. شکسته مجوز سطح تابع

اصطلاحات مرتبط

Endpoint, HTTP Request, REST, JSON, Authentication

منابع و مراجع

  • aws.amazon.com/what-is/api

مفاهیم مرتبط

نقطه پایانی

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

درخواست HTTP(HTTP)

پیامی که توسط کلاینت به سرور ارسال می‌شود و درخواست یک منبع یا اقدام را دارد، و از قوانین پروتکل HTTP استاندارد پیروی می‌کند.