کلید رابط برنامهنویسی اپلیکیشن یا “API Key”، کدی برای شناسایی و احراز هویت برنامه یا کاربر است. این کلیدها بهعنوان یک شناسه منحصربهفرد عمل کرده و حاوی یک رمز مخفی برای اهداف شناسایی و تایید کاربران است. در این مقاله، ابتدا به سوال «API Key چیست» میپردازیم. سپس با ویژگیها، میزان امنیت، مثالهایی از API Key در دنیای واقعی و چالشهای آنها آشنا خواهیم شد.
API Key چیست؟
کلیدهای API شناسههای الکترونیکی هستند که درون نرمافزارهای کامپیوتری ساخته و منتقل میشوند. این کلیدها به شما امکان دسترسی به دادهها یا خدمات وب را توسط API میدهند. با فراخوانی APIها توسط نرمافزار، فرآیند شناسایی کاربر، توسعهدهنده یا وبسایت انجام میشود.
API Key چگونه کار میکند؟
کلید API از حروف الفبا و اعداد تصادفی تولید شده است. شما یک کلید API خاص را به یک کلاینت API وصل میکنید. ازآنجاییکه هر API بهشکل یک ماژول نرمافزاری با ماژول دیگری در ارتباط است، کلیدها هم با ماژول نرمافزارهای مختلف یا برنامههای مصرفکننده API شما ارتباط میگیرند.
هنگامیکه اپلیکیشن یا ابزار آنلاینی درخواستهای API را ارسال میکند، فرآیند زیر بهاجرا درمیآید:
- سرور API اعتبار درخواستکننده را با کلید منحصربهفرد API او تایید میکند؛
- اگر API Key با هیچ یک از کلیدهای مجاز مطابقت نداشته باشد، سرور ارتباط API را رد و یک پیام Rejection به کلاینت میفرستد؛
- اگر کلید API مجاز باشد، سرور درخواست را پردازش کرده و پاسخ موردانتظار را به کلاینت ارسال میکند.
بیشتر بخوانید: firebase چیست؟ معرفی مزیتها، معایب و کاربردهای فایربیس
انواع API Key
دو نوع اصلی از کلیدهای API وجود دارد:
1. کلیدهای API عمومی
بهطورمعمول، این کلیدها توسط مالک برنامه تولید میشوند و در اختیار توسعهدهندگان یا کاربران قرار میگیرند. این کلیدها به برنامهنویسان اجازه میدهند تا به دادهها یا ویژگیهای عمومی یک برنامه دسترسی داشته باشند.
2. کلیدهای API خصوصی
کلیدهای خصوصی در ارتباطات سرور به سرور استفاده میشوند. از این نوع API Key برای تایید اعتبار درخواستها یا دسترسی به دادههای غیرعمومی استفاده میشود. کلیدهای خصوصی باید مخفی بمانند و با کسی بهاشتراک گذاشته نشوند.
از API Key در چه زمانهایی استفاده کنیم؟
در تکمیل پاسخ «API Key چیست» باید به سناریوهایی با نیاز به استفاده از API Key اشاره کنیم.
1. اعطای مجوز پروژه
- شناسایی پروژه: Project Identification با هدف شناسایی یک پروژه خاص یا برنامهای که با API در ارتباط است. این کلیدها، تعیین اطلاعات مورداستفاده در یک پروژه خاص و رد درخواستهای دسترسی غیرمجاز را تضمین میکنند.
- مجوز پروژه: از Project Authorization برای بررسی دسترسی برنامهای که با API ارتباط میگیرد، استفاده میشود. همچنین این مجوز فعال بودن API موردنیاز را در پروژه جاری بررسی میکند.
2. احراز هویت کاربران
- احراز هویت کاربر: User Authentication با بررسی هویت کاربران برنامه، تایید میکند که فرد درحال ارتباط با API، همان هویتی را دارد که ادعا میکند.
- مجوز کاربر: User Authorization مجاز بودن کاربر را برای ارسال درخواست به API و نوع آن، چک میکند.
3. نظارتبر استفاده از API
- ردیابی استفاده و مدیریت مصرف API: اینکار در برنامههای سازمانی، باعث نظارتبر استفاده APIها از منابع محاسباتی میشود.
- محدود کردن دسترسی به سرویسهای API: امکان محدود کردن دسترسی به APIها با اختصاص کلیدهای منحصربهفرد ممکن است. بنابراین فقط به ترافیکهای قانونی اجازه عبور، استفاده از منابع و ظرفیت پهنای باند API را اعطا خواهید کرد.
- آنالیز آمار استفاده از API: با تعریف یک کلید API، میتوانید آمار استفاده از آن را تجزیهوتحلیل کنید. اینکار با هدف تنظیم سهمیه برای پلنهای مختلف سازمان کاربرد دارد.
4. عیبیابی در ادغام API
- شناسایی عوامل مخرب در ترافیک API: برنامهها و سرویسهای ابری ممکن است بهدلیل APIهای متعددی که استفاده میکنند، با مشکلات فنی مواجه شوند. بنابراین توسعهدهندگان نرمافزار، با این کلیدها الگوهای غیرعادی را در دادهها شناسایی و آنها را از سایر APIهای مجاز جدا میکنند.
- فیلتر کردن ترافیک ناسالم API از ترافیک سالم: API Key خاص، هر درخواست با یک کلید منحصربهفرد را فیلتر کرده و آن را براساس کلاینت مصرفکننده نشان میدهد.
چگونه یک API Key بگیریم و از آن استفاده کنیم؟
برای دریافت کلید API، باید شش مرحله زیر را دنبال کنید:
1. انتخاب پلتفرم یا ارائهدهنده API
برای مثال، اگر قصد استفاده از نقشه گوگل را در اپلیکیشن اندروید یا وباپلیکیشن خودتان دارید، باید به صفحه Google Maps API مراجعه و متناسببا پلتفرمتان، روی لینک مربوطه کلیک کنید.
2. ایجاد حساب کاربری
چه در وبسایت گوگل و چه در هر اپلیکیشن آنلاین دیگری، باید با آدرس ایمیل، رمز عبور و توافق با شرایط خدمات شرکت توسعهدهنده API، یک حساب کاربری بسازید.
3. ساخت یک پروژه یا برنامه
پس از ثبتنام، به پروژه یا پلتفرم ساختهشده خودتان بازگردید. در این پلتفرم، باید تنظیمات مربوطبه API را پیکربندی کنید.
4. ایجاد یک کلید API
در داشبورد پروژه یا پلتفرم مقصد، گزینه مربوطبه ایجاد کلید مخفی (Secret Key) را بیابید. این کلید یک شناسه منحصربهفرد برای برنامه شما است که احراز هویت و تایید درخواستهایتان را انجام میدهد.
5. ذخیره کلید در محلی امن
با API Key مانند حساسترین دادهها رفتار کنید و آن را بهشکل مستقیم در کدهایتان قرار ندهید. برای ذخیره آن در برنامه، باید از متغیرهای محیطی یا سیستمی امن در مدیریت کلیدها کمک بگیرید.
API key ها معمولاً به همراه مکانیزمهای امنیتی دیگری مانند OTP (One-Time Password) برای افزایش سطح امنیت استفاده میشوند. OTP یک کد یکبار مصرف است که به عنوان یک لایه اضافی امنیتی عمل میکند. برای اطلاعات بیشتر در مورد OTP و نحوه عملکرد آن، میتوانید به مقاله otp چیست مراجعه کنید.
6. ادغام کلید API
این کلید را کپی کرده و در کد منبع پلتفرمتان قرار دهید. مراحل کار بهاتمام رسیده و کلید API ایجاد شده است. حالا امکان استفاده از آن را در برنامهتان دارید.
آیا کلیدهای API امن هستند؟
خیر. کلیدهای API بهصورت ذاتی دارای آسیبپذیری هستند که در ادامه به آنها اشاره خواهیم کرد.
- دسترسی ساده به کلید در کد منبع، کدهای منبع بهشکل Hardcoded یا اشتراکگذاری در GitHub
- سرقت کلیدها در حین انتقال اطلاعات
- لو رفتن کلیدها در صورت حملات XSS یا MITM
- امکان حمله بروت فورس (brute force چیست) به کلیدهای ضعیف و قابلحدس
- سرقت در پلتفرمهای ضعیف (از نظر ایمنی و رمزگذاری)
- آسیبپذیری بالای کلیدهای API در سرویسها و ابزارهای شخص ثالث
نکات مهم در ایمنسازی کلیدهای API
از کلید API باید مانند یک رمز عبور حساس، با دقت و حساسیت زیاد نگهداری کنید. در ادامه چند نکته برای امن کردن آنها را یاد خواهید گرفت.
- عدم نوشتن کلید در کد اصلی یا پلتفرمهای عمومی
- پوشاندن کلید در فرآیند مستندسازی کدها، اسکرینشاتها، URLها و اسناد دیگر
- ذخیره API Keys در متغیرهای محیطی یا فایلهای پیکربندی ایمن
- محافظت از کلیدها با پروتکل HTTPS در سرور و برنامه
- استفاده از مکانیزمهای پیشرفته در رمزنگاری دادهها مانند OAuth و MFA
- تعیین سیاست و خطمشی برای چرخش کلیدها (Rotating API Keys) و تغییر آنها بهشکل دورهای
- حذف فوری کلیدهای ناایمن و خطرناک از اپلیکیشن و سرور
- بررسی گزارشهای دسترسی به API و شناسایی استفادههای مشکوک یا غیرمجاز
- اختصاص یک کلید API یکتا به هر پروژه
3 مثال ساده از کلید API در دنیای واقعی
کلیدهای زیر، نمونههای واقعی از پلتفرمهای مشهور هستند.
1. Google Maps API Key
- AIzaSyCwEro-wQ6YUNcA1ozA9FQev-DyJp3t2EQ
2. OpenWeatherMap API Key
- 8dbf5d2a37c4178b4b03e6c49ae3f9e7
3. YouTube Data API Key
- AIzaSyBhKx_b0yj4erq8sZchmTw8BRXWyivLzW0
چه زمانی نمیتوانیم از کلید API استفاده کنیم؟
در سناریوهای زیر، کلید API کاربردی ندارد.
- الزام دسترسی به دادههای خاص کاربر در برنامه
- استفاده از این کلیدها در اپلیکیشنهای حساس مانند سرویسهای مالی یا پلتفرمهای نگهدارنده اطلاعات پزشکی و بهداشتی افراد
- نیازهای دسترسی کوتاهمدت
- مجوزهای پیچیده یا تعیین نقشهای زیاد برای کاربران
- ارتباط سرویسبهسرویس
- رقم زدن تجربه کاربری ساده و روان برای احراز هویت و ورود به سیستم
- نیازهای مکرر به چرخش کلید بهدلیل سیاستهای امنیتی پلتفرمها
- ثبت و نظارت بر تهدیدات شبکه و خطرات پلتفرمها
آنچه در API Key خواندیم
درحالیکه کلیدهای API سادگی و سهولت استفاده را برای برنامههای خاص ارائه میدهند، اما محدودیتهای قابلتوجهی هم در رابطه با امنیت و انعطافپذیری دارند. برای پلتفرمها و اپلیکیشنهایی که به دسترسی خاص کاربر، امنیت بالا یا ساختارهای پیچیده مجوزدهی نیاز دارند، استفاده از روشهای رمزگذاری قوی گزینه بهتری است. شما چه تجربهای در کار با کلیدهای API دارید؟ آیا روشهای رمزگذاری دیگر را به OAuth یا MFA ترجیح میدهید؟ ما مشتاق و پذیرای تجربه شما در بخش نظرات این مقاله هستیم.
سوالات متداولی که شما میپرسید
- API Key چیست؟
کلید API یک رشته متشکلاز حروف و اعداد است که برای احراز هویت کاربران، ارتباط با سرویسها و اپلیکیشنهای آنلاین استفاده میشود.
- در چه مواقعی از کلیدهای API استفاده کنیم؟
اعطای مجوز پروژه، احراز هویت کاربران، نظارتبر استفاده از API و عیبیابی در ادغام API بهترین مواقع برای استفاده از کلیدهای API هستند.
- کلید API چگونه است؟
AIzaSyBhKx_b0yj4erq8sZchmTw8BRXWyivLzW0، کلید API یوتیوب است که بهشکل عمومی در دسترس همه افراد قرار دارد.
منابع: