Modifica richiesta API

1

Sto costruendo un'API che restituisce dati sulle aziende Più applicazioni accederanno all'API, alcune di queste applicazioni avranno accesso a una società, alcune a più società. Quando viene ricevuta una richiesta di dati, viene inviato anche un ApplicationApiKey. Controllo se ApiKey ha accesso ai dati dell'azienda. Questo funziona perfettamente per le applicazioni a cui è consentito l'accesso a una società, tuttavia un ApplicationApiKey può avere accesso a più società.

Un utente di Company1 può accedere all'applicazione e inviare una richiesta al collegamento . L'utente può aggiornare il parametro ticket a un numero diverso. Questo potrebbe essere il numero di biglietto di una società diversa a cui l'Applicazione è autorizzata ad accedere ma l'utente che ha effettuato l'accesso non lo è. Come posso impedire agli utenti di modificare questo URL con un numero di ticket di una società diversa?

Questi sono i miei pensieri finora:

  1. È sufficiente avere la mia API accessibile solo tramite SSL
  2. Chiedere allo sviluppatore dell'applicazione di crittografare i parametri. link , Questo sembra fattibile per le richieste GET ma per quanto riguarda i POST.
  3. Non è un mio problema, è fino allo sviluppatore dell'app (fino a quando succede qualcosa quando sarà)
  4. Il mio intero processo è sbagliato, dovrebbe essere un APIKey per azienda (ma questo non è possibile in quanto le applicazioni possono aggiungere e rimuovere utenti di diverse società)

Grazie per eventuali risposte

    
posta Don 19.08.2014 - 00:18
fonte

1 risposta

3

Il tuo problema è un problema di autorizzazione.

  1. SSL non ha nulla a che fare con il tuo problema. Sebbene tu debba utilizzare SSL per proteggere i tuoi dati da perdite e manomissioni, non aiuterà in alcun modo a risolvere i tuoi problemi di autorizzazione.
  2. La crittografia dei parametri è insufficiente. Manterrà l'utente comune dalla manomissione dei parametri, ma non impedirà a qualsiasi utente malintenzionato sofisticato di eseguire il reverse engineering dell'applicazione client e di estrarre la chiave di crittografia, acquisendo così la capacità di manomettere i parametri anche se crittografati.

IMHO il tuo intero concetto di autorizzazione di un'applicazione è sbagliato. Se ti interessa davvero la violazione dei dati tra le aziende, devi implementare l'autorizzazione a livello di utente. Ogni utente dell'applicazione deve autenticarsi e dovrebbe disporre di un meccanismo che autorizzi l'utente ad accedere ai dati aziendali.

    
risposta data 19.08.2014 - 07:13
fonte

Leggi altre domande sui tag