Controlla l'accesso all'API pubblica

0

Sto lavorando su un'API pubblica per il progetto X. Il sistema consente di registrare un app_id e di chiamare i metodi API fornendolo, come al solito. Ora, ho bisogno di sviluppare un client mobile ufficiale per il progetto X che dovrebbe avere possibilità più ampie di quelle non ufficiali costruite su questa API.

In altre parole, pensiamo ad esempio che abbiamo un'API composta da 5 metodi GET. Ora implementerò 1 nuovo metodo PUT e voglio consentire solo 1 app_id esatto per utilizzarlo.

Il problema di sicurezza è questo:

  1. Se codifico semplicemente il controllo per app_id, sarà facile da superare, basta sniffare il traffico o decomprimere l'app per trovare questo app_id ufficiale e poi fingere che

  2. L'applicazione è mobile, quindi non posso limitare l'accesso tramite IP

  3. Crittografia a chiave pubblica, in cui la chiave pubblica è nel client e le chiavi private mantenute segrete dal server sembra uguale al problema 1. per me, non è vero?

Credo che non si tratti di un problema di supernova, quindi suggerisci gentilmente qualsiasi soluzione affidabile, per favore.

    
posta Ivan Fazaniuk 12.06.2015 - 13:07
fonte

1 risposta

1

Inserisci un sistema di risposta alla sfida nel codice: il server invia "12345", il client risponde con "SHA256 (12345 + qualsiasi-chiave segreta)". Se il server conosce la "chiave segreta", può controllare l'hash.

Ciò impedirebbe alle persone di annusare i dati di rete, ma l'app potrebbe ancora essere decompilata.

Se vuoi che l'app invii i dati, devi prima fare un "login" - inviare una richiesta, ottenere una sfida "12345", calcolare l'hash, inviare l'hash e hai effettuato l'accesso e puoi continuare.

    
risposta data 12.06.2015 - 13:23
fonte

Leggi altre domande sui tag