Ecco uno scenario semplice.
Ho un endpoint /person/:id
che restituisce le informazioni sulle persone dal database. Quando :id
non è noto, la risorsa viene cercata dal database. Un utente malintenzionato può utilizzare queste informazioni per creare intenzionalmente richieste che non esisterebbero nella cache e quindi l'API per interrogare il database.
Posso ridimensionare i servizi web all'infinito ( e oltre! ), tuttavia non posso scalare il database (a causa delle restrizioni di licenza).
Pertanto, posso crittografare i PK (ad esempio utilizzando aes ) e richiede che gli ID crittografati risultanti vengano utilizzati per interrogare l'API. Il vantaggio di questo approccio è che l'API può stabilire se l'ID è un ID valido senza la necessità di consultare il database.
Vorrei sapere se questo ha qualche svantaggio o se si tratta di un modello di design noto e c'è un nome che posso usare su Google.