Sto proteggendo le chiamate API a un servizio REST che sto costruendo utilizzando API Keys. Il piano è:
- Quando otteniamo un nuovo client, genera una chiave API (un UUID).
- Invia tramite email la chiave API a loro.
- Invia la chiave API su ogni chiamata al nostro servizio (su HTTPS). Cercheremo la chiave API nel nostro database (crittografandola o eseguendo prima l'hashing) e calcoleremo l'account per cui la chiave API è.
Alla fine, aggiungeremo account utente e un portale per tutto questo in modo che i clienti possano generare e disattivare le chiavi API senza che sia necessario coinvolgerle.
La mia domanda è sull'ultima parte. Devo eseguire l'hash o criptare (o lasciare non cifrato?) Le chiavi API prima di memorizzarle nel database? Sto cercando di capire le implicazioni. So che se li ho cancellati, allora sto proteggendo contro qualcuno che conosce tutte le chiavi API se ottengono l'accesso al DB. Ma quali sono le altre cose a cui dovrei pensare? Ad esempio, ci sono motivi di prestazioni per fare uno sopra l'altro?