La sezione Security Controls nella panoramica fatturazione in-app istruisce per effettuare una "verifica della firma" in un server remoto, piuttosto che in app (in esecuzione localmente sul dispositivo Android):Perché la verifica della firma sul server remoto è più sicura che sul dispositivo?
Eseguendo la verifica della firma è possibile aiuta a rilevare le risposte che sono state manomesse o che sono state falsificate. È possibile eseguire questo passaggio di verifica della firma nell'applicazione; tuttavia, se l'applicazione si connette a un server remoto sicuro, si consiglia di eseguire per la verifica della firma sul server .
Ma se eseguire la verifica della firma sul server remoto, in attesa di una risposta solo yes/no
o true/false
, non è questo in realtà più facile da intercettare e modificare da un attaccante?
E se la risposta dal server remoto è ancora un'altra firma, allora come verificare la seconda firma localmente sul dispositivo in modo più sicuro rispetto alla prima firma (Mercato)?
Cosa mi manca?
Aggiornamento: @alf ha osservato giustamente che se il server è anche responsabile per la distribuzione di contenuti acquistati e la verifica della firma viene eseguito sul server, quindi anche se l'attaccante compromette l'applicazione, il server non consegnare il contenuto acquistato tramite fatturazione in-app. Questo è banale e ben compreso.
Quello che ho omesso di menzionare in origine è che sto in realtà di uno scenario in cui il server non eroga alcun contenuto ma verifica solo la firma, in modo che l'applicazione può decidere se sbloccare alcune funzioni . In tal caso, qual è il vantaggio della verifica della firma del server remoto su quella in-app?
Mi chiedo anche se il controllo della firma del server è davvero necessario quando si implementa la fatturazione in-app solo per sbloccare funzionalità. Quali sono stati i tuoi risultati? –