Come impedire l'utilizzo non voluto dell'API REST?

0

Per un progetto universitario, dovrei implementare un'API che consenta l'archiviazione e il ritracciamento delle stringhe. I client che accedono a questa API possono essere app per dispositivi mobili e dispositivi embedded a bassa potenza. I dati memorizzati non sono sensibili, ma non voglio che gli aggressori li alterino o li cancellino. Molto probabilmente non sarà usato al di fuori dei nostri esperimenti limitati, ma mi piacerebbe molto capire come questo sarebbe stato fatto nel modo giusto.

Ho i seguenti vincoli:

  • Per motivi di usabilità, sarebbe bello se l'utente non fosse infastidito dal dover creare un account dopo aver installato l'app. Invece, voglio che recuperi un id / token al primo avvio, che viene generato dal server che autentica e identifica questo utente. Questo id / token è stato quindi fornito su tutte le seguenti richieste
  • I miei dispositivi incorporati non possono utilizzare TLS a causa dei vincoli di archiviazione, ram e cpu

Considerate queste restrizioni, dovrei considerare questa API come un'API "pubblica", anche se in realtà non voglio che sia pubblica? C'è qualcosa che posso fare contro (dal mio lato) uso non intenzionale, oltre all'accesso limitatore di velocità?

Cose che ho considerato:

Ho pensato di avere almeno la parte in cui si ottiene un ID / token dell'API eseguito su https, nascondendo quindi dove è possibile creare un account e potenzialmente anche richiedere una chiave segreta da fornire. Tuttavia, questo mi sembra molto simile alla sicurezza attraverso l'oscurità, e sarà probabilmente incline al reverse engineering. Ma potrebbe essere meglio di niente? Inoltre, penso che dovrei usare i token con diritti limitati dopo il processo di iscrizione, specialmente per i miei dispositivi embedded, poiché probabilmente non possono gestire l'uso di https tutto il tempo. In caso contrario, rischio il furto dell'identificatore del mio account, che potrebbe essere utilizzato per cancellare tutti i dati o sovrascriverli. Questi dispositivi incorporati saranno utilizzati solo in ambienti wifi di fiducia (domestici), ma ciò non dovrebbe impedirmi di fare le cose bene.

Quindi, per me, la situazione è la seguente:

  • I non posso impedire in modo affidabile alle persone di utilizzare la mia API in modi che non voglio che vengano utilizzati
  • I possibile e dovrebbe proteggere i dati degli utenti esistenti dalla modifica
posta connan 26.12.2015 - 13:36
fonte

1 risposta

1

Generare un token API senza che l'utente lo sappia è assolutamente insolito. Lo faccio sempre e questo non è un problema in sé. Ma inviare i dati in chiaro non è un problema. Se questa è un'affermazione del tuo professore, non puoi farci nulla, ma se non vuoi usarla a causa del motivo di esibizione dato, devo dissentire da te!

L'utilizzo di https non è nulla che rallenti molto di più un dispositivo mobile. Molte persone usano https tutto il tempo sui loro telefoni cellulari e non si accorgono nemmeno che la crittografia è usata perché non è così grande nel tempo necessario. Se hai davvero bisogno di una prestazione veloce, puoi ottimizzare le opzioni https del tuo webserver. La parte intensiva delle prestazioni è l'handshake iniziale che include la crittografia asimmetrica utilizzata per lo scambio della chiave master. Il masterkey è la chiave simmetrica utilizzata per quella sessione. È possibile impostare il livefime della masterkey su un valore più alto e predefinito sul lato server per evitare la parte ad alte prestazioni delle seguenti connessioni ssl.

    
risposta data 26.12.2015 - 17:47
fonte

Leggi altre domande sui tag