Sanitizza post XSS di terze parti in API Java

2

Abbiamo alcuni servizi API RESTful che utilizziamo da diversi anni. Recentemente abbiamo iniziato a prendere in considerazione l'idea di presentare questi a clienti di terze parti in modo che possano scrivere le proprie interfacce utente e possiamo lavorare alla creazione di questo livello di servizio. Sfortunatamente ciò significherebbe che non avremmo il controllo sull'imposizione di quei dati che sono stati disinfettati prima di postare, o prima del rendering che lascia un potenziale rischio per XSS (per esempio se qualcuno dovesse pubblicare dati con JavaScript in una textarea che potrebbe essere salvata nel DB ).

Il nostro stack è Apache, Tomcat e Java.

Qualcuno sa di un modo per mettere un qualche tipo di filtro di fronte a questi endpoint API esistenti che potrebbero gestire la disinfezione dei dati sia in entrata che in uscita (anche se l'ingresso è probabilmente più importante)? Come accennato, si tratta di API di vecchia data che non erano accessibili al pubblico, pertanto lo abbiamo trattato nel livello dell'interfaccia utente, ma vorremmo evitare di dover riscrivere tutti gli endpoint esistenti per gestire la disinfezione, se possibile.

    
posta MTP Daily 24.08.2016 - 23:00
fonte

1 risposta

1

Questa è un'esigenza comune e l'approccio abituale è fare 3 cose:

  1. sviluppa uno schema che descrive input accettabili e opzionalmente output per ciascun endpoint

    Se queste API utilizzano JSON o XML per i loro input e le loro risposte e hanno formati di richiesta e risposta coerenti per endpoint, esistono linguaggi di schema per tali formati.

    In caso contrario, o se la composizione di richieste accettabili - quali campi possono esistere o non esistere, quali tipi di valori possono apparire, ecc. - richiede qualche contesto e non può necessariamente essere genericamente convalidato, allora potrebbe essere difficile.

  2. introduce un gateway API nell'architettura

    I gateway API sono destinati a vivere ai margini dell'infrastruttura, come un server web, ma anche a fornire l'esecuzione di una logica complessa, in modo che tutti includano l'integrazione della lingua di runtime.

    Alcune opzioni di open source sono:

    Molti di questi hanno opzioni di supporto commerciale.

  3. Introdurre la logica di convalida utilizzando le definizioni dello schema nel gateway API per ciascun endpoint.

    I gateway API offrono molti altri vantaggi oltre alla convalida della richiesta / risposta che conta quando esponete le API a: esigenze quali autenticazione / autorizzazione, limitazione della velocità, misurazione, metriche, white / blacklisting, memorizzazione nella cache, trasformazione: sono disponibili anche.

risposta data 25.08.2016 - 01:45
fonte

Leggi altre domande sui tag