Informazioni identificabili personalmente nel parametro di query per il servizio REST di Tomcat

6

Ho un'API REST in esecuzione in un contenitore Tomcat con un endpoint che accetta un indirizzo email del cliente come parametro di query. È qualcosa del genere:

/[email protected]

Gli indirizzi email dei clienti sono una risorsa che vogliamo proteggere, quindi dobbiamo assicurarci che non siano registrati dove e che non possano essere intercettati. L'API funziona solo su HTTPS e richiede un'autenticazione strong.

Quando si tratta della registrazione, nel codice dell'applicazione, gli indirizzi e-mail non vengono registrati. Tuttavia, a tutti gli URL il servizio viene disconnesso in Tomcat localhost_access_log, che include i parametri di query. Un piano prevede l'utilizzo di una diversa valvola del registro di accesso Tomcat che non ha disconnesso i parametri di query negli URL. Sarebbe sufficiente per garantire che gli indirizzi e-mail non vengano disconnessi. Esiste da qualche altra parte che in genere esegue il logout degli URL che devono essere risolti?

    
posta oggmonster 15.07.2015 - 10:38
fonte

2 risposte

1

È molto probabile che altri servizi agiscano come proxy, client o server-side o load balancer in questa architettura. Questi gestiscono le richieste di dispacciamento attraverso un pool di Tomcats, ognuno dei quali potrebbe non essere in grado di servire le richieste a causa di implementazione o manutenzione o altro motivo.

Tutti questi servizi avranno access_logs simili, scritti sui file di log o scritti sui servizi di registrazione del sistema locale, che possono essere spediti a aggregatori di logging di terze parti o essere sottoposti a backup su servizi di backup o su un numero qualsiasi di altri luoghi.

In generale non è possibile mantenere i componenti della "linea di richiesta" - metodo, URI, querystring, versione HTTP - di tutti i tipi di memoria duratura.

    
risposta data 17.09.2016 - 02:01
fonte
1

Come sottolineato da Jonah B, di solito è impossibile mantenere puliti tutti i componenti della "linea di richiesta".

Esiste una tecnica molto più sicura: non utilizzare le PII nella richiesta, ma utilizzare per essa un valore mappato.

Quindi, invece di /[email protected] avresti, ad esempio, /customers?email=a4kl3delmze , dove a4kl3delmze è generato casualmente dal server al momento della creazione. Anche l'utilizzo di un valore come l'hash dell'e-mail potrebbe funzionare.

Il punto è: il valore del parametro è mappato all'e-mail nel database, quindi puoi ancora eseguire la tua biz-logic ma non trasferisci il valore della stringa email con le tue richieste

    
risposta data 14.02.2017 - 14:46
fonte

Leggi altre domande sui tag