Come posso proteggere la mia api per evitare di copiare?

2

Sto costruendo un'app che dovrebbe ricevere dati dal mio server. L'API dovrebbe essere uno script basato su PHP che fornisce i dati come JSON.
Tuttavia, voglio mantenere i dati privati e dovrebbe essere accessibile solo dall'app stessa.
Come posso impedire ad altri di riprogettare la mia app e trovare un modo per accedere all'API?
Ho pensato di utilizzare una chiave API per l'accesso principale e SSL per impedire la lettura dei dati durante l'esecuzione di un attacco uomo nel mezzo, ma come posso nascondere la richiesta GET stessa o dovrei usare una specie di PGP e crittografare i dati stessa?

    
posta Kimmax 24.08.2014 - 16:46
fonte

2 risposte

3

La prima cosa che dovresti fare è assicurarti che tutte le comunicazioni tra la tua app e il server utilizzino HTTPS anziché HTTP. Questo dovrebbe proteggerti dall'ispezione casuale dei pacchetti. Per rendere questa installazione più sicura, puoi anche considerare l'utilizzo di blocco dei certificati per prevenire attacchi man-in-the-middle coinvolgendo un certificato falsificato per il tuo sito.

Se si utilizza SSL, il contenuto della richiesta GET sarà crittografato (sebbene il fatto che si stia effettuando una connessione al server sarà evidente). Il tuo vero problema è che se si distribuisce l'app al pubblico, è può essere decodificato e si può estrarre qualsiasi chiave API che si utilizza. Puoi offuscare il file binario, ma questo non può eliminare completamente la possibilità di reverse engineering.

A seconda della tua app e della natura dei tuoi dati, dovresti preoccuparti di più sull'autenticazione degli utenti della tua app, piuttosto che sull'applicazione stessa.

    
risposta data 24.08.2014 - 17:17
fonte
2

La chiave della sicurezza è la comprensione dei vettori di attacco. Chi sta tentando di accedere ai tuoi dati?

È un teorema fondamentale che non puoi non dare informazioni. Se un client ha ricevuto dati dal tuo server, questo non può essere annullato. La crittografia si limita ad assicurare che il client giusto riceva informazioni.

In particolare, "l'app stessa" non è qualcosa che controlli completamente. Il client è un computer da qualche parte su Internet. L'applicazione in esecuzione su quel computer può essere studiata dal proprietario del computer. I dati inviati all'app si trovano in memoria e possono essere studiati dopo la decrittazione. La crittografia protegge i dati solo da intercettatori / uomini nel mezzo.

    
risposta data 25.08.2014 - 09:12
fonte

Leggi altre domande sui tag