Come affermato in precedenza, non è possibile una sicurezza al 100%. Ma ci sono diverse soluzioni che messe insieme danno grande sicurezza.
Https
Come fai notare, questa è una parte importante , in quanto impedisce l'annusamento.
Sessioni
Usa le sessioni e non consentire alcuna richiesta senza una sessione valida (tranne la prima, che deve autenticare l'app).
Impronta digitale
Controlla lo user agent e imposta intestazioni http aggiuntive, per ottenere un'impronta digitale univoca per la tua app. ( Qualcuno poteva annusare, ma aveva bisogno di usare curl o simili. )
Offusca le richieste
Crea la tua stringa di query e applica una funzione hash. Il server deve implementare la funzione inversa. ?43adbf764Fz invece di ?a=1&b=2
Crittografa
Questo fa un passo avanti. Usa un segreto condiviso per calcolare un hash. Sul server ripetere lo stesso. Questa è già una forte sicurezza. Per interrompere, è necessario eseguire il reverse engineering della tua app.
Utilizza un segreto condiviso univoco
Dici che è un'app per iOS. Al momento dell'installazione, iOS genera un token univoco. Chiedi alla tua app di registrare questo token sul tuo server. In questo modo hai un forte segreto condiviso unico per ogni installazione e non ci sarebbe modo di hackerare la tua app web.