Domanda

Sto sviluppando un'app client/server che comunicherà tramite rest.Alcuni dati della richiesta personalizzata verranno archiviati nell'intestazione della richiesta.Sia il server che invia la richiesta che il server ricevente hanno un certificato SSL: le intestazioni saranno crittografate o solo il contenuto?

È stato utile?

Soluzione

SSL crittografa l'intero percorso di comunicazione dal client al server e viceversa, quindi sì, le intestazioni verranno crittografate.

A proposito, se sviluppi applicazioni di rete e ti preoccupi della sicurezza dei dati, il minimo che dovresti fare è leggere un libro come Practical Cryptography, di Niels Ferguson e Bruce Schneier, e probabilmente un'ulteriore lettura più focalizzata sulla sicurezza delle applicazioni web sarebbe una buona idea. idea.Se posso fare un'osservazione - e per favore, non la intendo come una critica personale - la tua domanda indica una fondamentale mancanza di comprensione delle tecnologie di sicurezza web più basilari, e questo non è mai un buon segno.

Inoltre, non è mai una cattiva idea confermare che i dati che si presume siano crittografati lo siano effettivamente.È possibile utilizzare un analizzatore di rete per monitorare il traffico in linea e fare attenzione a qualsiasi cosa sensibile venga inviata in chiaro.Ho già utilizzato Wireshark per farlo: a volte i risultati possono essere sorprendenti.

Altri suggerimenti

Finché comunichi nel tunnel SSL, tutto ciò che viene inviato tra il server e il client verrà crittografato.La crittografia viene eseguita prima che i dati vengano inviati o ricevuti.

Sia le intestazioni che il contenuto sono crittografati.

Sembra che tu pensi che REST sia un protocollo distinto.

REST non è un protocollo.È uno stile di progettazione per applicazioni basate su HTTP.

Quindi, stai scrivendo un'applicazione HTTP.Le intestazioni sono crittografate?Sì, se utilizzi il protocollo HTTPS (HTTP over SSL) anziché il semplice HTTP.

Avere certificati su entrambi i lati non è direttamente rilevante per la tua domanda.I certificati SSL vengono utilizzati per l'autenticazione.Aiutano a rilevare attacchi man-in-the-middle, come quelli possibili utilizzando l'avvelenamento della cache DNS.

Avere un certificato non è sufficiente, devi configurare il server web per crittografare le connessioni (cioè utilizzare il certificato) per quel dominio o host virtuale.Inoltre, penso che ti servirebbe solo un singolo certificato, le risposte alle richieste saranno comunque crittografate.

E sì, le intestazioni HTTP sono crittografate così come i dati.

SSL...o meglio HTTPS (HTTP over SSL) invia tutto il contenuto HTTP su SSL e poiché il contenuto e le intestazioni HTTP sono in realtà la stessa cosa, ciò significa che anche le intestazioni sono crittografate.Visto che i dati GET e POST vengono inviati tramite intestazioni HTTP, ha senso solo quando si inviano dati in modo sicuro non si desidera solo che il codice di risposta o il contenuto siano crittografati.

Le altre risposte sono corrette sul fatto che le intestazioni sono effettivamente crittografate, insieme al corpo, quando si utilizza SSL.Tieni però presente che l'URL, che può includere parametri di query, lo è Mai crittografato.Quindi fai attenzione a non inserire mai informazioni sensibili nei parametri di query dell'URL.

Aggiornamento: come sottolineato da @blowdart di seguito, questo è sbagliato.Vedi il commento qui sotto.

Non qualunque cosa è crittografato:la stringa della query della richiesta non è crittografata.Credimi, ho visto richieste come questa:

https://mydomain.com/authenticate?user=nomeutente&password=MyStrongPasswordSentInTheClear

Si prega di non inserire dati sensibili come parametri nella stringa di query.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top