Migliaia di richieste API utente e invalidazione

Ho appena notato che sto vedendo migliaia di richieste API utente al giorno a partire da aprile di quest’anno nei report di sicurezza della dashboard.

Questo è molto strano e lontano da 10 a 1000 volte dalle mie aspettative.

Come posso ottenere report più dettagliati sugli utenti che richiedono chiavi e su quali utenti effettuano quante e quali richieste API? Se una chiave ha accesso alle richieste di lettura/scrittura, presumo che qualcuno possa leggere e scrivere argomenti/post da remoto. Potrebbe essere un sito remoto che esegue lo scraping dei post?

Inoltre, esiste un modo per invalidare/scadere globalmente tutte le chiavi API utente?

1 Mi Piace

Solo per confermare, ti stai chiedendo delle richieste API utente e non delle richieste API che sono state eseguite con una chiave API che hai generato per gli utenti nella pagina Admin / API del tuo sito Discourse. Le richieste API utente sono evidenziate in verde nello screenshot qui sotto:

Maggiori dettagli su come vengono utilizzate le chiavi API utente sono qui: User API keys specification.

A meno che tu non abbia creato un’app che si integra con il tuo sito Discourse, le spiegazioni più probabili sono che gli utenti accedano al sito tramite l’app DiscourseHub (https://play.google.com/store/apps/details?id=com.discourse&hl=en&gl=US&pli=1) o che stiano utilizzando un’app simile a Fig - Native Discourse client for iOS per interagire con il sito.

Questo non risponde a tutte le tue domande, ma puoi ottenere una panoramica generale di come vengono utilizzate le chiavi API utente con la seguente query di Data Explorer:

SELECT * FROM user_api_keys

Per ottenere un elenco di applicazioni che effettuano richieste di chiavi API utente al tuo sito e un conteggio del numero di utenti che effettuano richieste con ciascuna applicazione:

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

Le chiavi API utente utilizzate per connettersi dall’app DiscourseHub avranno il loro application_name impostato su “Discourse - unknown”.

Se un utente utilizza una chiave API utente per interagire con il sito, verrà aggiunta una voce in “App” nella scheda Sicurezza della sua pagina delle preferenze:

La voce mostra gli ambiti concessi all’app. Ti consente anche di revocare l’accesso all’app.

Non vedo alcun modo per far scadere o revocare tutte le chiavi API utente dall’interfaccia utente di Discourse. C’è solo l’opzione di revocare una chiave alla volta dalle pagine delle preferenze degli utenti. Sarebbe possibile revocare tutte le chiavi API utente dalla console Rails, ma probabilmente vale la pena indagare prima su come vengono utilizzate le chiavi.

1 Mi Piace

Sì, grazie, sono richieste API utente

1 Mi Piace

Sembra che ci siano troppe richieste per provenire dall’app DiscourseHub. Se hai installato Data Explorer sul tuo sito, sarei curioso di conoscere i risultati di questa query:

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

Ho testato quella query sul mio sito di prova, ma ha solo una user_api_request dall’app DiscourseHub. Penso di aver strutturato correttamente la query per gestire più utenti che si connettono a Discourse da più app, ma fammi sapere se qualcosa nei risultati sembra strano.

1 Mi Piace

Ho impiegato del tempo per installare il data explorer, la mia ricostruzione è fallita per qualche motivo.

Questo è ciò che vedo:

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

Ho mascherato alcuni nomi, questi sembrano essere solo pochi utenti. La query restituisce informazioni per un periodo di tempo specifico? Migliaia di richieste API per pochi utenti mi sembrano eccessive. Inoltre, un utente sembra avere 2 user_count, ciò significa che ha 2 chiavi API (cioè 2 app)?

1 Mi Piace

Ci sono due possibilità. O l’utente ha due iPhone con lo stesso nome del dispositivo OPPURE ha disinstallato l’app e l’ha reinstallata a un certo punto. In entrambi i casi avrebbe più chiavi API.

1 Mi Piace

No, restituisce dettagli su tutte le chiavi API utente attive.

Prova a eseguire la query seguente:

SELECT * FROM user_api_keys

Presumo che restituirà solo 7 righe. Fammi sapere se non è così.

Non necessariamente. Quando gli utenti accedono al sito tramite l’app DiscourseHub, le loro richieste al sito vengono conteggiate come richieste API utente. Se alcuni degli utenti leggono attivamente il sito, potrebbero generare 2.000 richieste in un giorno.

Sì, è corretto, vedo solo 7 elementi.

Ciò significa che va tutto bene. Non conosco il contesto qui, è un carico normale per il forum da gestire?

Mi sembra tutto ragionevole. Per contesto, sono brevemente entrato nel mio sito di prova oggi tramite l’app DiscourseHub. Il sito ha quasi nessun contenuto. L’ho navigato per qualche minuto e ho generato 36 richieste API utente. Su un sito con molti contenuti da scorrere, non sarebbe irragionevole per un singolo utente generare molte richieste nel corso di una giornata.

Se sei ancora preoccupato per questo, sarebbe possibile utilizzare il plugin Data Explorer per esaminare l’attività degli utenti i cui user_id sono stati restituiti da questa richiesta:

SELECT * FROM user_api_keys
1 Mi Piace

La curiosità ha avuto la meglio su di me, così ho controllato un sito che uso quasi esclusivamente tramite l’app DiscourseHub. Ho quasi 1100 richieste di chiave API utente nelle ultime 24 ore da quel sito e sono l’unico utente con una chiave attiva. :slight_smile:

2 Mi Piace