۰۷ اسفند ۱۴۰۴مبانی وبمبتدیزبان: فارسی
رابط برنامهنویسی کاربردی(API)
مبتدینسخه انگلیسی
مجموعهای از قوانین و نقاط پایانی که به نرمافزارهای مختلف اجازه میدهد با یکدیگر صحبت کنند، مانند منویی از توابع قابل استفاده.
apirestنقطه-پایانیوبیکپارچهسازی
تعریف کوتاه
API مثل منوی رستوران برای برنامهنویسان است. به جای سفارش غذا، از یک برنامه میخواهی کاری انجام دهد: "داده کاربر را به من بده"، "این را ذخیره کن"، "آن را حذف کن." API مشخص میکند چه چیزی میتوانی درخواست کنی و چطور درخواست کنی.
تعریف کامل
یک API (رابط برنامهنویسی کاربردی) یک قرارداد بین اجزای مختلف نرمافزاری است که نحوه ارتباط آنها را مشخص میکند. APIهای وب مدرن معمولاً:
مفاهیم کلیدی:
- نقاط پایانی: URLهای مشخص برای توابع مختلف
- متدها: افعال HTTP (GET، POST، PUT، DELETE)
- درخواست: چیزی که ارسال میکنید (پارامترها، بدنه)
- پاسخ: چیزی که دریافت میکنید (معمولاً JSON)
مثال:
bash
1GET /api/users/1232← داده کاربر را برمیگرداند34POST /api/users5← کاربر جدید ایجاد میکند67DELETE /api/users/1238← کاربر را حذف میکند
انواع رایج API:
- REST: از متدهای HTTP استفاده میکند، بدون حالت
- GraphQL: دقیقاً آنچه نیاز دارید پرسوجو کنید
- SOAP: مبتنی بر XML، سختگیرانهتر
- WebSocket: بلادرنگ، دوطرفه
چرا مهم است
- برنامههای مدرن بر روی APIها ساخته شدهاند
- برنامههای موبایل از طریق API ارتباط برقرار میکنند
- میکروسرویسها از طریق API صحبت میکنند
- یکپارچهسازیهای شخص ثالث از API استفاده میکنند
- APIها منطق تجاری را در معرض دید مهاجمان قرار میدهند
چگونه مهاجمان از آن استفاده میکنند
حملات رایج API:
- احراز هویت شکسته: احراز هویت ضعیف یا وجود ندارد
- مجوزدهی شکسته: دسترسی به دادههای سایر کاربران
- افشای بیش از حد داده: API اطلاعات زیادی برمیگرداند
- مشکلات محدودیت نرخ: حملات brute force
- تخصیص انبوه: تغییر فیلدهایی که باید محافظت شوند
- SSRF از طریق API: API URLهای خارجی را واکشی میکند
- تزریق: تزریق SQL/دستور از طریق پارامترها
مثال حمله:
bash
1# نقطه پایانی API2GET /api/users/12334# حمله 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 (۲۰۲۳):
- شکسته مجوز سطح شی (IDOR)
- احراز هویت شکسته
- شکسته مجوز سطح ویژگی شی
- مصرف منابع بدون محدودیت
- شکسته مجوز سطح تابع
اصطلاحات مرتبط
Endpoint, HTTP Request, REST, JSON, Authentication