Come impedisco all'XSS di accedere direttamente alle API AJAX / JSON?

2

Nel mio ricco client, sfuggo ai dati forniti dall'utente prima del rendering per impedire XSS.

I dati provengono dal server senza caratteri di escape. Ciò è necessario per la logica dell'applicazione, ad esempio evitando situazioni in cui per errore controllo "O&Donnell"==="O'Donnell"

Tuttavia, un utente malintenzionato può inviare all'utente un link per indirizzare l'accesso GET all'API JSON sottostante; o l'utente potrebbe inciampare su di esso. Questo abilita XSS.

Come posso impedirlo? Token CSRF? Impostare il tipo di contenuto in testo normale o JSON e non in HTML? Qualche altro approccio?

    
posta Joshua Fox 22.02.2018 - 09:50
fonte

3 risposte

5

Setting content-type to plaintext or JSON and not HTML?

Se l'API restituisce JSON, il tipo di contenuto deve essere application/json . Oltre a essere corretto, questo fermerà anche qualsiasi problema XSS. Se un utente naviga direttamente su un endpoint dell'API nel proprio browser, il browser mostrerà solo il JSON non elaborato e non tenterà di eseguire il rendering di alcun codice HTML o di eseguire script.

    
risposta data 22.02.2018 - 14:39
fonte
1

È possibile inviare i dati dal codice di base64 API codificato, quindi base64 decodificarlo nel client prima dell'elaborazione. Ad ogni modo raccomando vivamente di verificare e convalidare correttamente i dati non fidati sul lato server:

link

    
risposta data 22.02.2018 - 13:27
fonte
1

Come diceva Andres, se l'applicazione comunica su JSON, assicurati che il tipo di contenuto sia impostato su application / json e non text / html.

    
risposta data 22.02.2018 - 17:58
fonte

Leggi altre domande sui tag