Hrm. In cima all'SSL non sono sicuro di quello che stai ricevendo da API_SECRET qui.
Penserei che avere un certificato SSL del server da una fonte conosciuta e attendibile sarebbe il meglio che si possa fare qui, assumendo che l'app client sia distribuita in maniera attendibile. A quel punto, il client può verificare l'autenticazione del server tramite la sessione SSL e il server autentica il client con nome utente / password.
Come dice @Polynomial - SSL dovrebbe crittografare la sessione in modo tale che gli attacchi MITM tra gli endpoint SSL non costituiscano un problema. Trick è sapere dove si trovano questi endpoint e essere sicuri che si trovano nella tua infrastruttura in una posizione ben congegnata. Ad esempio, se esiste un endpoint SSL davanti al server delle app: cosa protegge quell'ultimo miglio di trasmissione?
Allo stesso modo - l'applicazione (mobile o web) controlla correttamente che il certificato SSL del server provenga da una fonte attendibile?
Aggiunta per domanda nel commento:
Ho dato un'occhiata al riferimento di classe per NSURLRiferimento sulle pagine di sviluppo Mac e non ho trovato alcun riferimento a SSL affatto ... infatti i commenti dicono che è indipendente dal protocollo, il che ha senso dato che si chiama URL richiesta.
Non penso che tu possa presumere che tu abbia anche HTTPS con questa classe - devi fare qualcosa per configurare la sessione HTTPS invece di eseguire l'impostazione predefinita su HTTP. Ecco la panoramica sugli sviluppatori Mac su SSL . Mi disturba un po ', perché non esiste una funzione ovvia per ottenere il certificato del server
.
Quindi avrai bisogno anche del Certificato, chiave e affidabilità servizi - per verificare il certificato.
NON darei per scontato che l'ambiente di sviluppo di Apple farà semplicemente questo per te. L'esperienza precedente con altre API non mi ha dato alcun motivo per fidarmi di questo e non vedo la documentazione che dice quello che fa esplicitamente. Non sono nemmeno particolarmente sicuro di come gli store trust lavorino in questo ambiente di sviluppo. E questo non è un posto dove vuoi fare ipotesi cieche. Analizzerei le condizioni in cui l'ambiente forza SSL, verifica l'autenticità dei certificati del server e verifica che il certificato sia firmato da una CA attendibile. Se non disponi della documentazione che ti dice quando e come accadono queste cose, non puoi davvero supporre che il tuo servizio sia sicuro.