Domanda 1
Ho un endpoint dell'API di accesso
http://127.0.0.1:8080/api/account/login
Controlla se il numero di telefono è stato convalidato. In caso contrario chiamerà
POST http://127.0.0.1:8080/api/account/sendsms country_code=1, phone_number=1234567
Come posso prevenire l'abuso nella richiesta di sms? (Mi costerà denaro da parte mia, ho anche la funzione di throttle)
Voglio solo inviare sms se /login
fallisce (a questo punto l'email è stata validata)
Il mio modo è di inviare un'intestazione personalizzata X-TOKEN-SMS
che agisca come un'intestazione di autorizzazione con token jwt. Il token jwt X-TOKEN-SMS viene creato a /login
se il numero di telefono non è validato = True.
Quando /sendsms
decodifica il jwt senza errori, procedi con la richiesta di sms.
Se jwt decodifica con errore, il front-end reindirizzerà a /login
.
Questo metodo è una buona pratica?
Come si consente l'accesso a un endpoint dell'API solo se è stato effettuato l'accesso a un endpoint?
Domanda 2
Diciamo che ho un endpoint a cui è possibile accedere solo da un utente autorizzato
http://127.0.0.1:8080/api/account/points
L'utente può ottenere punti (recuperare tutti i suoi punti) Punti POST (crea un nuovo punto) o PATCH (aggiorna un punto)
Come posso impedire a un utente autorizzato di abusare del POST / punti? Potrebbero aggiungere punti a loro piacimento, il che non è ciò che la mia app vorrebbe che fosse. L'aggiunta di punti dovrebbe essere gestita dalla logica dell'app.
Se il punto di aggiunta non dovrebbe essere utilizzato dall'API REST, quindi creare una nuova riga direttamente sul db è più sicuro?
Ho trovato una domanda simile posta prima di Secure Rest api da utente autenticato Ma sembra che non riesca a capirlo.