Modifica:
Alla luce delle nuove informazioni (è un'app mobile, solo le richieste da questa app dovrebbero essere consentite) questo post è aggiornato. La vecchia risposta è stata rimossa perché non pertinente.
L'OP vuole quindi garantire che le richieste vengano inviate dalla sua applicazione mobile e non dal programma definito da un utente malintenzionato. Normalmente questo tipo di garanzia viene conseguita firmando digitalmente le richieste utilizzando un certificato (chiave pubblica e privata) sul lato client e utilizzando la chiave pubblica sul server. Se applicato allo scenario delle applicazioni mobili, il certificato deve essere presente nell'applicazione (spedito insieme o trasmesso quando l'app viene utilizzata per la prima volta) in modo che le richieste possano essere firmate.
Ora supponiamo che l'hacker voglia creare i propri messaggi da inviare al server. Affinché queste richieste siano accettate, devono essere firmate. Per firmare questi messaggi ha bisogno della chiave privata che è contenuta nell'app in un modo o nell'altro. L'attaccante si scarica su un dispositivo controllato da un attaccante. Poiché l'integrità del dispositivo mobile non può essere garantita (il dispositivo può essere rootato, emulato, ...) esiste sempre un modo per ottenere il certificato. L'unica cosa che puoi fare è cercare di rendere questo recupero MOLTO difficile. L'offuscamento dell'applicazione può essere di aiuto contro l'analisi statica, ma occorre anche assicurarsi che il certificato sia difficile da trovare in memoria in fase di runtime.
Per provare la difficoltà di questo problema, prendiamo Pokemon Go come esempio. In pochi giorni dal lancio, qualcuno ha intercettato il traffico di rete dall'app al server e ha scritto il proprio programma (eseguito su un computer desktop o portatile) che riproduce il comportamento dell'app (invio di aggiornamenti della posizione del giocatore, lanciando un pokeball, ecc.) che giocavano automaticamente a Pokemon Go. Questo è noto come "bot". Gli sviluppatori rilasciano diversi aggiornamenti per proteggere le richieste (presumo abbiano provato anche la firma digitale) ma ogni volta che gli hacker sono in grado di invertire la logica e creare le proprie richieste. L'unica cosa che ha funzionato davvero è stata quella di esaminare gli schemi nelle richieste dal lato server per rilevare che provenivano da un "bot" anziché da un'app mobile legittima. Le cose che hanno usato sono il tempismo delle richieste (esattamente 1 secondo a parte), la posizione del giocatore che cambia in determinati schemi, ecc. Se un giocatore è stato assunto per barare usando un bot, è stato bannato. Gli aggressori hanno risposto a questo aggiungendo un po 'di randomizzazione alle loro richieste per rendere l'analisi più difficile. Quindi è diventato un gioco di gatti e topo tra attaccanti e difensori. Pokemon Go ha anche mandato a cessare e desistere lettere a persone che potrebbero identificare come sviluppatori dei bot. Questo dimostra quanto fossero impotenti contro il problema.