Restful API

What is

Representational State Transfer

ابتدا باید بدانیم API چیست؟

API مخفف Application Programming Interface (رابط برنامه‌نویسی اپلیکیشن) هست. به زبان ساده تر، API مثل یه گارسون تو رستوران عمل میکنه. فرض کن تو رستوران نشستی و میخوای غذا سفارش بدی، گارسون (API) سفارشت رو میگیره، میبره به آشپزخونه (سرور یا سیستم دیگه) و بعد غذا رو برات میاره. تو لازم نیست بدونی آشپزخونه چطور غذا رو درست میکنه، فقط سفارشت رو میدی و نتیجه رو میگیری.

یکی از API های رایج در طراحی وبسایت  Rest API است که از قوانین ساده ای برای ارتباط بین برنامه و سرور استفاده میکند تا با هم حرف بزنن. این سبک مثل یک قرارداد بین برنامه نویسان و سرورهاست تا همه از این استانداردها استفاده کنند.

ویژگیهای اصلی Restful API چیست؟

  • استفاده از HTTP : مثل همون درخواستهایی که تو مرورگر برای باز کردن یهک صفحه وب فرستاده میشه (GET, POST, DELETE, PUT,…)؛
  • استفاده از منابع : هر چیزی در REST یک «منبع» حساب میشه. مثل کاربر، محصول، سفارش و … و هر منبع یک آدرس url دارد؛
  • بدون حالت (Stateless) : هر درخواست در سرور باید همه اطلاعات لازم را داشته باشد. سرور چیزی از درخواستهای قبلی یادش نمیموند؛
  • فرمت داده : معمولاً داده ها با فرمت JSON یا XML رد و بدل میشوند؛

مثال RESTful API

فرض کنید یک وبسایت فروش کتاب دارید و میخواهید کاربر بتواند لیست کتابها را ببیند. کاربر درخواست را به arminrezaei.ir/api/books (آدرس منبع) میفرسته و سرور بر اساس RESTful API جواب را در فرمت JSON با لیست کتابها میدهد.

[
  {"id": 1, "title": "شازده کوچولو", "author": "آنتوان دو سنت اگزوپری"},
  {"id": 2, "title": "بوف کور", "author": "صادق هدایت"}
]

کاربر درخواست میفرسته : مثلا میخوای تو یه اپلیکیشن آب و هوا، وضعیت هوای تهران رو ببینی. اپلیکیشن یه درخواست ب API میفرسته؛

GET https://api.weather.com/tehran

سرور پاسخ میده : داده های آب و هوا رو برمیگردونه؛

{

“city”: “Tehran”,

“temperature”: “25C”,

“condition”: “Sunny”

}

اپلیکیشن داده ها را آنطور که برنامه نویس کد نویسی کرده نمایش میدهد؛

RESTful API استاندارد و قابل فهم هستن. بدون حالته که در تمام دستگاه ها و اپلیکیشنها مثل موبایل، وب یا حتی دستگاههای IoT به تعداد درخواست بسیار زیاد مدیریت و استفاده بشن.

اما API ها یک موضوع خیلی مهم دارند. آنها چون درهای ورودی به سیستمها و داده ها هستند، اگر درست امن نشوند، به راحتی توسط هکرها مورد سواستفاده قرار میگیرند. برخی از روشهای امن کردن API ها استفاده از پروتکلهای HTTPS، احراز هویت قوی و محدود کردن دسترسی ها هستند.

یکی از معروفترین نفوذ هکرها توسط API ها در سال 2018 برای فیسبوک اتفاق افتاد که باعث شد اطلاعات بیش از 50 میلیون کاربر لو بره. مشکل فیسبوک آن موقع درست پیاده نشدن احراز هویت بود. تو ایران هم بارها این اتفاق افتاده برای سایتهای دولتی و خصوصی که خبرهای آنها در خبرگزاری ها پخش گردیده.

تهدادت امنیتی رایج برای API ها

  • عدم اهراز هویت یا اهراز هویت ضعیف : اگه API نفهمه که داره درخواست میفرسته، هر کسی میتونه بهش دسترسی پیدا کنه. مثلا API با کد ساده 123 کار میکنه و این کد در اپلیکیشن لو بره؛
  • نبود رمزنگاری HTTPS : اگر API ها از HTTP استفاده کنند، داده ها بین مسیر کاربر و سرور توسط هکرها قابل دزدیدن هستند. مثلا نامه ای را بدون پاکت بفرستی و همه بتوانند آن را بخوانند؛
  • دسترسی بیش از حد : دسترسی دادن کاربران به داده هایی که نباید دسترسی داشته باشند، مثلا کاربرها بتوانند لیست تمام کاربران سیستم را ببینند؛
  • حملات تزریقی: هکرها کدهای تخریبی را در درخواست API ارسال میکنند؛
  • نبود محدودیت نرخ : اگر API تعداد درخواست را محدود نکند هکرها میتوانند با درخواساهای زیاد سرور را از کار بیندازند. مثل این میماند که یکی مدام زنگ در خونه ات را بزند تا خسته شوی!

توجه داشته باشید که هیچ سیستمی 100% غیر قابل نفوذ نیست، هر چقدر هم که تیمهای حرفه ای روشون کار کرده باشند، برای همین توسعه دهنده ها همیشه باید مراقب API ها باشند و همواره آنها را آپدیت کنند و از API های معتبر استفاده شود و اطلاعات حساس رو بی دلیل به اشتراک نگذارند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.