أفضل الممارسات لبناء مفاتيح API آمنة

نعلم جميعًا مدى أهمية واجهات برمجة التطبيقات. إنها البوابة لاستكشاف الخدمات الأخرى ، والاندماج معها ، وبناء حلول رائعة بشكل أسرع.

قد تكون بنيت أو تفكر في إنشاء واجهات برمجة التطبيقات للمطورين الآخرين لاستخدامها. تحتاج واجهة برمجة التطبيقات (API) إلى بعض أشكال المصادقة لتوفير وصول مرخص به للبيانات التي تُرجعها.

هناك العديد من معايير المصادقة المتاحة اليوم مثل API Keys و OAuth و JWT ، إلخ.

في هذه المقالة ، سننظر في كيفية إدارة مفاتيح API بشكل صحيح للوصول إلى واجهات برمجة التطبيقات.

فلماذا مفاتيح API؟

مفاتيح API سهلة الاستخدام ، فهي قصيرة وثابتة ولا تنتهي صلاحيتها إلا إذا تم إبطالها. أنها توفر وسيلة سهلة لخدمات متعددة للتواصل.

إذا قمت بتوفير واجهة برمجة التطبيقات لعملائك لاستهلاكها ، فمن الضروري لك أن تبنيها بالطريقة الصحيحة.

لنبدأ ، وسنوضح لك كيفية إنشاء مفاتيح API بالطريقة الصحيحة.

واجهة برمجة تطبيقات مفتاح الجيل

نظرًا لأن مفتاح واجهة برمجة التطبيقات (API) بحد ذاته هو هوية يتم من خلالها تحديد التطبيق أو المستخدم ، يجب أن يكون فريدًا وعشوائيًا وغير قابل للتخمين. يجب أن تستخدم مفاتيح واجهة برمجة التطبيقات التي يتم إنشاؤها أيضًا حروفًا أبجدية رقمية وأحرفًا خاصة. مثال على مفتاح API هذا هو zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx.

تأمين API الرئيسية التخزين

نظرًا لأن مفتاح API يوفر الوصول المباشر إلى البيانات ، فهو يشبه إلى حد كبير كلمة المرور التي يوفرها مستخدم الويب أو تطبيق الجوّال للوصول إلى نفس البيانات.

فكر في الأمر. السبب في أننا بحاجة إلى تخزين مفاتيح واجهة برمجة التطبيقات هو التأكد من أن مفتاح واجهة برمجة التطبيقات (API) في الطلب صالح وإصداره من جانبنا (تمامًا مثل كلمة المرور).

لا نحتاج إلى معرفة مفتاح API الخام ، ولكننا بحاجة فقط إلى التحقق من صحة المفتاح. لذا بدلاً من تخزين المفتاح في نص عادي (سيء) أو تشفيره ، يجب أن نخزنه كقيمة مجزأة في قاعدة البيانات الخاصة بنا.

تعني القيمة المجزأة أنه حتى لو تمكن شخص ما من الوصول غير المصرح به إلى قاعدة البيانات الخاصة بنا ، فلن يتم تسريب أي مفاتيح واجهة برمجة التطبيقات وكلها آمنة. سيرسل المستخدم النهائي مفتاح API الخام في كل طلب من واجهات برمجة التطبيقات ، ويمكننا التحقق من صحته عن طريق تجزئة مفتاح API في الطلب ومقارنة مفتاح التجزئة مع التجزئة المخزّن في قاعدة بياناتنا. إليك تطبيق تقريبي له في Java:

في التعليمة البرمجية أعلاه ، سيكون المفتاح الأساسي هو مزيج من البادئة وتجزئة مفتاح API {prefix}. {hash_of_whole_api_key}.

لكن انتظر ، هناك المزيد. تخزين قيمة التجزئة يجلب مشاكل قابلية الاستخدام المحددة. دعنا نتناول هؤلاء الآن.

تقديم مفتاح API للمستخدمين

نظرًا لعدم تخزين مفتاح API الأصلي ، يمكننا إظهاره مرة واحدة فقط للمستخدم ، في وقت الإنشاء. لذا تأكد من تنبيه المستخدمين إلى أنه لا يمكن استردادها مرة أخرى ، وأنهم بحاجة إلى إنشاء رمز مميز جديد إذا نسوا نسخ مفتاح واجهة برمجة التطبيقات وتخزينه بأمان. يمكنك فعل شيء مثل هذا:

عرض مفتاح API الذي تم إنشاؤه مع رسالة تنبيه

كيف يمكن للمستخدمين تحديد مفتاح API الذي تم إنشاؤه في وقت لاحق

هناك مشكلة أخرى تتمثل في كيفية تعريف المستخدمين لمفتاح واجهة برمجة التطبيقات (API) الصحيح في وحدة التحكم الخاصة بك إذا كانوا بحاجة إلى تحريره أو إبطاله. يمكن حل ذلك عن طريق إضافة بادئة إلى مفتاح API. لاحظ في الصورة أعلى الأحرف السبعة الأولى (هذه بادئة لدينا) ، مفصولة بالنقطة.

يمكنك الآن تخزين هذه البادئة في قاعدة البيانات وعرضها في وحدة التحكم حتى يتمكن المستخدمون من التعرف بسرعة على إدخال مفتاح واجهة برمجة التطبيقات الصحيح ، مثل هذا:

وحدة تحكم إدارة مفتاح API

لا تمنح مفتاح API كل القوة

من الأخطاء الشائعة التي يرتكبها مقدمو خدمات واجهة برمجة التطبيقات الرئيسية توفير مفتاح واحد للوصول إلى كل شيء ، نظرًا لأنه من السهل إدارته. لا تفعل ذلك. افترض أن المستخدم يحتاج فقط إلى قراءة رسالة بريد إلكتروني ، ويقوم بإنشاء مفتاح API. ولكن هذا المفتاح الآن لديه حق الوصول الكامل إلى الخدمات الأخرى ، بما في ذلك حذف السجلات في قاعدة البيانات.

تتمثل الطريقة الصحيحة في السماح للمستخدمين النهائيين بتقييد الوصول إلى مفتاح API بشكل صحيح واختيار إجراءات محددة يمكن أن يقوم بها مفتاح API. يمكن القيام بذلك من خلال توفير النطاقات ، حيث يمثل كل نطاق إذنًا محددًا.

فمثلا،

  • إذا كنت بحاجة إلى مفتاح API لإرسال رسائل البريد الإلكتروني فقط ، يمكنك إنشاء مفتاح واجهة برمجة التطبيقات بنطاق "email.send"
  • إذا كان لدى المستخدم النهائي خوادم متعددة ويقوم كل منها بتنفيذ إجراء محدد ، فيمكن إنشاء مفتاح API منفصل بنطاق محدد.

لذا ، أثناء إنشاء مفتاح API ، اسمح للمستخدمين بتحديد الوصول الذي يجب أن يتمتع به مفتاح API ، كما في الصورة أدناه.

وبهذه الطريقة ، يمكن للمستخدمين إنشاء مفاتيح واجهة برمجة تطبيقات متعددة ، ولكل منها قواعد وصول محددة لتحسين الأمن. وعندما يتم تلقي طلب API ، يمكنك التحقق مما إذا كان مفتاح API لديه النطاق الصحيح للوصول إلى واجهة برمجة التطبيقات هذه. تبدو قاعدة البيانات الآن مثل هذا:

كيان قاعدة بيانات API الرئيسية

معدل الحد من مفاتيح API

نعم ، ربما تعرف ذلك بالفعل ، ولكن من المهم تقييم طلبات الحد التي تم إجراؤها باستخدام مفاتيح API محددة لضمان عدم قدرة أي ممثل سيئ على إنزال خوادم واجهة برمجة التطبيقات الخاصة بك أو التسبب في مشكلات في الأداء تؤثر على عملائك الآخرين. إن وجود حل مناسب للحد من الأسعار ومراقبتها يجعل خدمة واجهة برمجة التطبيقات صحية.

خاتمة

مفاتيح واجهة برمجة التطبيقات (API) ، عندما يتم بناؤها بشكل صحيح ، لا تزال وسيلة رائعة للتواصل مع خادم آخر. كما استعرضنا في هذه المقالة ، فإن اتباع ممارسات معينة يوفر فوائد لكل من مستهلكي واجهة برمجة التطبيقات وموفري واجهة برمجة التطبيقات. آمل أن يساعدك هذا.

سعيد تأمين واجهات برمجة التطبيقات الخاصة بك!