Attualmente sto sviluppando un'applicazione web che fornirà dati ai client iPhone. Per essere il proprietario dei dati, non voglio che altri client siano in grado di ottenerli.
Pensavo di poter utilizzare una chiave segreta condivisa tra il server e i client: una stringa hardcoded che salverebbe il timestamp per garantire che la richiesta fosse stata eseguita da uno dei miei clienti. Quindi la richiesta sarebbe simile a questa:
http://domain.com/request/[desired_object_id]/[device_id]/[timestamp]/[hash]
Vorrei calcolare l'hash in questo modo nell'app:
hash = sha(desired_object_id + device_id + timetsamp + "mysecretkey")
E sul lato server, mi sarei assicurato che l'hash fosse stato generato correttamente prima di inviare i dati. (tutti gli oggetti identificati da "desired_object_id" sono disponibili per tutti gli abbonati). In alternativa, potrei anche generare una chiave casuale piuttosto che un timestamp.
Il problema è che non mi sembra sicuro ... I dati non sono critici, è solo che non voglio offrire una API pubblica usata dai non abbonati. E fare ciò mi impedirà anche di cambiare la chiave segreta, perché ciò costringerebbe gli utenti ad aggiornare ad una nuova versione client (non molto utile per gli affari ...)
C'è qualche altro problema noto con questo? C'è un modo migliore per farlo? Preferibilmente con la stessa semplicità.