API REST - Prevenzione XSS - Quando e come?

2

Attualmente sto sviluppando un'API REST con Java EE e MySQL, alimenterà i dati a un'app Android. I dati provengono da un frontend di AngularJS. Quindi le mie domande sono, quando: Quando esco dai dati? Prima che sia compilato nelle dichiarazioni preparate? Quando consegna il JSON? Entrambi?

E come: Come posso sfuggire ai dati? Attualmente sto manipolando con ESAPI e encodeForHTML - il problema qui è che è un escaping di roba come @ e :) che vorrei supportare.

    
posta JoJae 22.05.2015 - 23:23
fonte

1 risposta

0

When do I escape the data?

Fondamentalmente, il più tardi possibile. Il database è un posto dove archiviare i dati, non è un luogo per codificare (sfuggire) i dati. Naturalmente usa istruzioni preparate parametrizzate per prevenire eventuali attacchi Iniezione SQL , ma questo dovrebbe essere il massimo. Il tuo obiettivo per scrivere nel database è semplicemente quello di archiviare i dati con successo e di evitare qualsiasi contesto di violazione degli attacchi e di manipolare le query a proprio vantaggio.

Pensa sempre che se un cliente / manager / fornitore ha bisogno di un'esportazione dei dati, è molto più facile se questi dati sono già in formato semplice. Può diventare un mal di testa se poi devi iniziare a convertirlo da HTML / JSON e poi tornare nel formato corretto per l'esportazione.

Quindi la soluzione è codificare per JSON (ma non HTML) quando si consegna il JSON (preferibilmente utilizzando un codificatore JSON Java provato e testato).

Non menzioni il modo in cui esegui il rendering nella tua app per Android. Se stai usando un controllo non web, non devi assolutamente scappare. Se il controller non interpreta l'HTML e si limitano a impostare gli elementi di testo, l'applicazione non eseguirà alcuno script immesso. Se stai generando una webview in Android sul client, dovresti codificare HTML a questo punto.

    
risposta data 23.05.2015 - 15:54
fonte

Leggi altre domande sui tag