آلاف طلبات API من المستخدمين وإبطالها

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

هذا غريب جدًا وغير متوقع بمقدار 100 إلى 1000 مرة من توقعاتي.

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

هل هناك أيضًا طريقة لإبطال/انتهاء صلاحية جميع مفاتيح واجهة برمجة تطبيقات المستخدم عالميًا؟

إعجاب واحد (1)

للتأكيد، هل تسأل عن طلبات واجهة برمجة تطبيقات المستخدمين وليس طلبات واجهة برمجة التطبيقات التي تم تشغيلها باستخدام مفتاح واجهة برمجة تطبيقات قمت بإنشائه للمستخدمين في صفحة المسؤول / واجهة برمجة التطبيقات الخاصة بموقع Discourse الخاص بك. يتم تمييز طلبات واجهة برمجة تطبيقات المستخدمين باللون الأخضر في لقطة الشاشة أدناه:

التفاصيل حول ما تُستخدم مفاتيح واجهة برمجة تطبيقات المستخدمين من أجله موجودة هنا: User API keys specification.

ما لم تقم بإنشاء تطبيق يتكامل مع موقع Discourse الخاص بك، فإن التفسيرات الأكثر احتمالاً هي إما أن المستخدمين يقومون بتسجيل الدخول إلى الموقع عبر تطبيق DiscourseHub (https://play.google.com/store/apps/details?id=com.discourse&hl=en&gl=US&pli=1) أو أنهم يستخدمون تطبيقًا مشابهًا لـ Fig - Native Discourse client for iOS للتفاعل مع الموقع.

هذا لا يجيب على جميع أسئلتك، ولكن يمكنك الحصول على نظرة عامة على كيفية استخدام مفاتيح واجهة برمجة تطبيقات المستخدمين باستخدام استعلام مستكشف البيانات التالي:

SELECT * FROM user_api_keys

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

SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name

ستكون مفاتيح واجهة برمجة تطبيقات المستخدمين التي تُستخدم للاتصال من تطبيق DiscourseHub لها application_name مضبوطًا على “Discourse - unknown”.

إذا استخدم مستخدم مفتاح واجهة برمجة تطبيقات مستخدم للتفاعل مع الموقع، فسيتم إضافة إدخال “التطبيقات” إلى علامة التبويب “الأمان” في صفحة تفضيلاته:

يعرض الإدخال النطاقات التي تم منحها للتطبيق. كما يسمح لك بإلغاء الوصول إلى التطبيق.

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

إعجاب واحد (1)

نعم، شكراً، إنها طلبات واجهة برمجة تطبيقات المستخدم

إعجاب واحد (1)

يبدو أن هذا عدد كبير جدًا من الطلبات القادمة من تطبيق DiscourseHub. إذا كان لديك Data Explorer مثبتًا على موقعك، فسأكون مهتمًا بنتائج هذا الاستعلام:

SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name

لقد اختبرت هذا الاستعلام على موقع الاختبار الخاص بي، ولكنه يحتوي فقط على طلب user_api_request واحد من تطبيق DiscourseHub. أعتقد أنني قمت ببناء الاستعلام بشكل صحيح للتعامل مع مستخدمين متعددين يتصلون بـ Discourse من تطبيقات متعددة، ولكن أخبرني إذا بدا أي شيء في النتائج غير صحيح.

إعجاب واحد (1)

استغرق الأمر بعض الوقت لتثبيت مستكشف البيانات، وفشل إعادة البناء لسبب ما.

هذا ما أراه:

application_name user_count
Discourse - xhanse’s iPhone X 1
Discourse - iPhone 1
Discourse - xrett’s iPhone 2
Discourse - xave’s iPhone 1
Discourse - xixu’s iPhone 1
Discourse - xevin’s GS8 1

لقد قمت بإخفاء بعض الأسماء، ويبدو أن هؤلاء مجرد عدد قليل من المستخدمين. هل يعرض الاستعلام معلومات لفترة زمنية محددة؟ آلاف طلبات واجهة برمجة التطبيقات (API) لعدد قليل من المستخدمين تبدو مفرطة بالنسبة لي. أيضًا، يبدو أن أحد المستخدمين لديه 2 user_count، هل هذا يعني أن لديه مفتاحين لواجهة برمجة التطبيقات (أي تطبيقين)؟

إعجاب واحد (1)

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

إعجاب واحد (1)

لا، إنه يُرجع تفاصيل حول جميع مفاتيح واجهة برمجة التطبيقات النشطة للمستخدمين.

جرب تشغيل الاستعلام أدناه:

SELECT * FROM user_api_keys

أفترض أنه سيعيد 7 صفوف فقط. أخبرني إذا لم يكن الأمر كذلك.

ليس بالضرورة. عندما يصل المستخدمون إلى الموقع عبر تطبيق DiscourseHub، تُحتسب طلباتهم إلى الموقع كطلبات واجهة برمجة تطبيقات للمستخدم. إذا كان عدد قليل من المستخدمين يقرأون الموقع بنشاط، فيمكنهم إنشاء 2000 طلب في يوم واحد.

نعم هذا صحيح، أرى 7 عناصر فقط.

هل هذا يعني أن كل شيء على ما يرام؟ لا أعرف السياق هنا، هل هذا حمل طبيعي يمكن للمنتدى التعامل معه؟

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

إذا كنت لا تزال قلقًا بشأن هذا، فسيكون من الممكن استخدام المكون الإضافي Data Explorer للنظر في نشاط المستخدم للمستخدمين الذين تم إرجاع user_id الخاص بهم من هذا الطلب:

SELECT * FROM user_api_keys
إعجاب واحد (1)

دفعتني الفضول، لذا تحققت من موقع أستخدمه حصريًا تقريبًا عبر تطبيق DiscourseHub. لدي ما يقرب من 1100 طلب مفتاح واجهة برمجة تطبيقات للمستخدم خلال الـ 24 ساعة الماضية من هذا الموقع وأنا المستخدم الوحيد الذي لديه مفتاح نشط. :slight_smile:

إعجابَين (2)