هرآنچه باید درباره امنیت API (API Security) بدانید!

هرآنچه باید درباره امنیت API (API Security) بدانید!

امنیت API (API Security) چیست؟

امنیت API به مجموعه اقدامات و تدابیری گفته می‌شود که با هدف جلوگیری یا کاهش حملات سایبری علیه رابط‌های برنامه‌نویسی نرم‌افزارها (Application Programming Interface) انجام می‌گیرد.

در بستر فناوری، APIها به عنوان چارچوب ارتباطی پنهان در پشت صحنه اپلیکیشن‌های تحت وب عمل کرده و مسئولیت انتقال داده‌ها میان کاربران و سرورها را بر عهده دارند.

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

بنابراین امنیت  API به عنوان یکی از ارکان حیاتی در استراتژی‌های امنیت سایبری سازمان‌ها شناخته می‌شود و لازم است در تمامی مراحل طراحی، توسعه و مدیریت خدمات و سرویس‌ها به دقت پیاده‌سازی و نظارت گردد.

 

نحوه عملکرد API چگونه است؟

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

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

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

 

چرا امنیت Web API اهمیت دارد؟

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

مجرمان سایبری ممکن است از طریق حملاتی مانند MITM، DDoS، Injection و Broken Access Control اقدام به نفوذ و دسترسی غیرمجاز به اطلاعات و سامانه‌ها نمایند.

 

منظور از API چیست؟

رابط برنامه‌نویسی نرم‌افزار (API) یک مکانیزم استاندارد است که امکان برقراری ارتباط، تبادل داده و اجرای درخواست‌ها را بین دو سامانه نرم‌افزاری فراهم می‌کند.

به عنوان مثال اپلیکیشن Google Maps هرگز اطلاعات مربوط به خیابان‌ها، شهرها، رستوران‌ها و سینماها را در دستگاه تلفن همراه ذخیره نمی‌کند؛ بلکه این اپلیکیشن از طریق یک API به سامانه‌های مرکزی گوگل متصل می‌شود که کلیه این داده‌ها را در خود نگه‌داری می‌کنند. این رابط، تبادل اطلاعات میان اپلیکیشن و سرورهای گوگل را تسهیل کرده و بستر دسترسی فوری به داده‌ها را فراهم می‌آورد.

 

امنیت REST API  (REST API Security)

امنیت Representational state transfer (REST) API یکی از رایج‌ترین و پرکاربردترین روش‌های تامین امنیت API است که در آن از URL و پروتکل HTTP برای کنترل دسترسی به داده‌ها استفاده می‌شود. این روش به طور خاص تعیین می‌کند کدام داده‌ها و تحت چه شرایطی قابل دسترسی هستند. این مکانیزم امنیتی به ویژه در پیشگیری از حملاتی که به منظور وارد کردن داده‌های مخرب توسط مهاجم از طریق API صورت می‌گیرد، بسیار موثر است.

 

چطور REST API را ایمن کنیم؟

REST API با پشتیبانی از پروتکل‌های زیر و رمزنگاری داده‌ها در حین انتقال، امنیت آن‌ها را تامین می‌کند:
Secure Sockets Layer (SSL)؛

Transport Layer Security (TLS)؛

Hypertext Transfer Protocol Secure (HTTPS).

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

عملکرد امنیت در سطح API بر اساس بررسی داده‌های ورودی به محیط API است؛ به طوری که هرگونه تهدید یا داده مخرب را قبل از دسترسی به سیستم، شناسایی و مسدود می‌کند.

از سوی دیگر  API Security در سطح اپلیکیشن به مسدودسازی تلاش‌های مهاجمان برای مختل کردن عملکرد اپلیکیشن یا دسترسی غیرمجاز به اطلاعات مهم، از نفوذ جلوگیری می‌کند.

 

تفاوت REST API و SOAP API در چیست؟

SOAP (Simple Object Access Protocol) یک پروتکل پیام‌رسان است که بر پایه XML طراحی شده و برای انتقال اطلاعات میان سیستم‌ها به کار می‌رود. این پروتکل از  XML signature و توکن‌های Security Assertion Markup (SAML) برای احراز هویت و تایید پیام‌هایی که منتقل می‌شوند، استفاده می‌کند. به این ترتیب SOAP می‌تواند API keyهای لازم را فراهم کند تا از دسترسی غیرمجاز مجرمان سایبری جلوگیری نماید.

Signatureها و Tokenها در پروتکل SOAP، می‌بایست با قالب‌های تاییدشده، مطابقت داشته باشند تا اجازه عبور پیام صادر شود. این در حالی است که REST API  از نظر امنیتی، دارای رویکردی متفاوت است؛ چرا که نیازی به مسیریابی و آنالیز (routing و parsing) داده‌ها به شکل پیچیده ندارد. در واقع REST با استفاده از درخواست‌های HTTP (HTTP Request) برای ارسال و دریافت اطلاعات استفاده می‌کند و در فرایند انتقال، نیازی به پک کردن مجدد داده‌ها ندارد. این ویژگی باعث می‌شود عملکرد REST نسبت به SOAP سبک‌تر، سریع‌تر و کارامدتر باشد.

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

 

استانداردهای API Security

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

 

آسیب‌پذیری‌ها (Vulnerabilities)

نخستین گام در فرایند ایمن‌سازی APIها، شناسایی دقیق مخاطرات و ریسک‌های احتمالی در ساختار و عملکرد سیستم است. برای این منظور لازم است نقاط آسیب‌پذیر در چرخه حیات API، شناسایی شوند و با تمرکز بر آسیب‌پذیری‌های رایج، اقدامات پیشگیرانه اتخاذ شوند. از جمله این اقدامات می‌توان به جلوگیری از حملات Structured Query Language (SQL) injections، اعمال قوانین سختگیرانه بر ساختارهای JavaScript Object Notation (JSON) و تعیین محدودیت در تعداد درخواست‌ها (Rate Limiting) جهت کنترل حجم تبادلات با سرور API اشاره کرد.

 

توکن‌ها (Tokens)

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

 

رمزنگاری (Encryption)
رمزنگاری یکی از موثرترین راهکارهای تامین ارتباطات و تبادل داده‌ها به شمار می‌رود.

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

 

پروتکل‌های  OpenID Connect و OAuth 

پروتکل‌های  OpenID Connect و OAuth دو استاندارد مهم در زمینه امنیت وب هستند که با همکاری یکدیگر، امنیت مراحل احراز هویت (authentication) و اعطا مجوز (authorization) را تقویت می‌کنند. این پروتکل‌ها با محدود کردن ارسال اطلاعات به کاربران دارای توکن معتبر یا احراز هویت‌شده، فرایندهای امنیتی را به‌طور موثر و قابل توجهی بهبود می‌بخشند.

Open Authorization (OAuth) یک چارچوب استاندارد است که مشخص می‌کند چگونه اپلیکیشن‌های Client-Side باید توکن‌های دسترسی را دریافت و مدیریت کنند. در این سیستم، توکن‌ها به عنوان مجوزهای موقت برای دسترسی به منابع محافظت‌شده صادر می‌شوند.

از سوی دیگر OpenID Connect (OIDC) به عنوان لایه احراز هویت بر بستر OAuth عمل نموده و این امکان را فراهم می‌آورد که سرویس‌های احراز هویت (Identity Provider)، هویت کاربر نهایی را به طور امن، به کلاینت اعلام کنند.

 

رویکردهای Throttling و Quotas

مکانیزم‌های Throttling و Quotas از جمله ابزارهای موثر در مدیریت منابع و حفاظت از پهنای باند محسوب می‌شوند؛ چرا که با محدودسازی میزان و نرخ دسترسی به سیستم، از بروز اختلال و سوءاستفاده جلوگیری می‌کنند.

به عنوان مثال رویکرد Throttling در برابر حملاتی مانند DDoS  که با ارسال حجم بالایی از درخواست‌ها قصد دارند سرویس را از دسترس خارج کنند، بسیار کارامد است. در این روش سرعت ارسال و دریافت داده‌ها محدود شده و در صورت عبور از آستانه تعیین‌شده، درخواست‌های بیشتر مسدود می‌شوند.

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

استفاده همزمان از این دو راهکار، امنیت و پایداری عملکرد API را در برابر تهدیدات احتمالی به شکل موثری افزایش می‌دهد.

 

API gateway

API gateway یک نقطه میانی بین کلاینت (کاربر یا اپلیکیشن) و مجموعه‌ای از سرویس‌های موجود در سمت سرور (Backend) است. این مولفه نقش reverse proxy را ایفا کرده و تمام درخواست‌ها را ابتدا از gateway عبور داده و سپس به سرویس‌های مورد نظر هدایت می‌کند.

در این فرایند، «اعتبارسنجی» و «احراز هویت درخواست‌ها» نیز مطابق با استانداردهای از پیش‌تعیین‌شده انجام می‌گیرد و تنها درخواست‌های معتبر به سوی سرویس‌ها منتقل می‌شوند. به این ترتیب API gateway ضمن مدیریت و توزیع ترافیک، لایه‌ای از امنیت و کنترل دسترسی را نیز فراهم می‌کند.

 

رویکرد Zero-Trust

مدل امنیتی زیروتراست (Zero-Trust) بر این اصل استوار است که هیچ ترافیکی اعم از داخلی و خارجی، به خودی خود قابل اعتماد نیست. بنابراین پیش از صدور مجوز برای عبور هرگونه ترافیک در شبکه، «احراز هویت دقیق کاربر» و «بررسی سطح دسترسی او» الزامی است.

این مدل امنیتی با محدود کردن دسترسی تنها به کاربران و دستگاه‌های احراز هویت‌شده، سطح امنیت را به طور قابل توجهی بهبود می‌بخشد. در چارچوب مدل امنیتی zero-trust حتی اگر دستگاهی پیشتر تایید شده باشد، برای هر بار ورود و دسترسی مجدد به منابع، ملزم به احراز هویت است.

 

سوالات پرتکرار درباره امنیت API (API Security)

  • API Security دقیقا چیست؟

مجموعه‌ای از استانداردها، ابزارها و تدابیر امنیتی گفته می‌شود که با هدف محافظت از APIها در برابر تهدیدات سایبری و جلوگیری از دسترسی غیرمجاز به اطلاعات و سرویس‌ها پیاده‌سازی می‌شود.

 

  • API چیست؟

رابط برنامه‌نویسی نرم‌افزار (API) یک مکانیزم استاندارد است که امکان برقراری ارتباط، تبادل داده و اجرای درخواست‌ها را بین دو سامانه نرم‌افزاری فراهم می‌کند.

 

  • چه آسیب‌پذیری‌هایی در میان APIها رواج دارد؟

آسیب‌پذیری‌های رایج در APIها که می‌توانند منجر به دسترسی غیرمجاز به داده‌ها شوند، عبارتند از:

 

  • Weak Authentication and Authorization
  • SQL Injection
  • JSON Hijacking
  • Insufficient Rate Limiting
  • Improper CORS Implementation