Protezione dei dati JSON

2

Sto pensando di utilizzare JSON come meccanismo di trasporto dei dati tra la mia app iOS e il mio server (il server è un servizio WCF). Durante l'apprendimento di JSON, mi sono reso conto che tutti i dati sono passati direttamente nell'URL. Sono sicuro che questa domanda viene posta molto ma non sono riuscito a trovare nulla di concreto sul sito.

Esiste un'alternativa all'invio di dati JSON direttamente nell'URL?

In caso contrario, come posso proteggerlo? Dovrei essere in grado di impedire a tutti tranne all'app di richiedere o inviare dati al servizio. Un modo per farlo è inserire una "chiave" come parte di ogni richiesta; uno che è noto solo per l'app e il server. In questo modo ho potuto rifiutare tutte le chiamate senza la chiave corretta. Ma cosa è impedire a qualcuno di annusare i dati e falsificare una richiesta?

L'SSL sarà disponibile qui? Se ho un certificato SSL, crittograferà automaticamente tutti i dati da e verso l'app?

Sono sicuro che questo è uno scenario molto comune, quindi sono alla ricerca del modo più elegante per risolvere questo problema.

    
posta bobbyalex 29.05.2014 - 07:37
fonte

2 risposte

2

Non tutti i dati JSON fanno parte della stringa di query dell'URL. Solitamente, questo è solo il caso quando si inviano richieste GET HTTP al server.

Servizi come il tuo sono protetti in modo efficace utilizzando HTTPS. Il protocollo TLS sottostante crittografa tutti dati scambiati tra client e server, anche stringhe di query URL.

Se configuri i tuoi servizi WCF per esporre solo un endpoint HTTPS, tutto il traffico verrà automaticamente crittografato.

Visto che stai usando un servizio WCF, ti consiglio di dare un'occhiata a API Web ASP.NET : È progettato specificamente per creare servizi RESTful e scoprirete che ha un sovraccarico molto inferiore rispetto alla creazione e alla manutenzione dei servizi WCF. Otterrai anche prestazioni migliori poiché le richieste e le risposte non utilizzano il protocollo SOAP.

    
risposta data 29.05.2014 - 08:37
fonte
2

Una distinzione fondamentale è se si desidera (1) impedire agli utenti non autorizzati di accedere a questa API, (2) per impedire l'intercettazione o un attacco man-in-the-middle o (3) per impedire che un software non autorizzato sia utilizzato da un utente autorizzato. Per (2) puoi usare SSL. Per (1) puoi usare SSL e far autenticare gli utenti usando una password. Per (3) non esiste una soluzione tecnica affidabile, puoi solo provare a offuscare l'API. Crittografare le richieste utilizzando una chiave di crittografia incorporata (in modo offuscato) all'interno del programma è un metodo comune.

    
risposta data 29.05.2014 - 09:02
fonte

Leggi altre domande sui tag