2010-08-30 16 views
9

Sto cercando una libreria java in grado di fornire protezione contro XSS attacks. Sto scrivendo un server, e vorrei convalidare l'input del mio utente non contiene javascript dannoso.Librerie java Anti-XSS

Quale libreria consiglieresti?

+0

possibile duplicato di [Come "purificare" il codice HTML per prevenire attacchi XSS in Java o JSP?] (http://stackoverflow.com/questions/3587199/how-to-purify-html-code-to-prevent-xss-attacks-in-java-or-jsp) e [Best regex per catturare XSS (Cross-site Scripting) attack (in Java)?] (http://stackoverflow.com/questions/24723/best-regex-to-catch-xss-cross-site-scripting-attack-in-java) – BalusC

+0

@BalusC - true. – ripper234

risposta

6

È necessario utilizzare AntiSamy. (That's what I did)

+0

Penso che AntiSamy non fornisce la funzionalità di rilevamento se viene eseguito un XSS. Puoi suggerire una biblioteca che potrebbe aiutare a scoprire lo stesso? – Siddharth

+1

XSS non può essere rilevato fino a quando non viene eseguito correttamente in un contesto del browser. Tuttavia, antisamy genera un elenco di errori in modo da poter vedere i motivi per cui un particolare DOM è stato rifiutato. A questo punto, tuttavia, l'antisamide non è stata toccata dal 2013, quindi probabilmente non dovrebbe essere comunque utilizzata. – avgvstvs

1

Se si desidera accettare HTML dagli utenti, quindi AntiSamy o qualcosa come jsoup ha senso. Tuttavia, se si desidera solo un buon set di fuggitivi, è possibile utilizzare una libreria come CSL

Abbiamo un foglio on-line trucco che mostra come usarlo in molti contesti HTML (aka HTML constructs):

+0

Non utilizzare Jsoup per scopi di convalida della sicurezza. Il design di Jsoup è quello di "correggere" l'HTML non valido e molti attacchi XSS sono deliberatamente non validi ... quindi Jsoup lo "ripara" e la tua convalida probabilmente lo segnala come buono. – avgvstvs

2

Il grande post come prevenire gli attacchi XSS in diverse situazioni è pubblicato nello stack seguente: Avoid XSS and allow some html tags with JavaScript

+0

Non mi piacerebbe usare javascript per fare ciò: la maggior parte degli attacchi in questi giorni sono basati su DOM e javascript ha una tecnica chiamata monkeypatching che può consentire a un utente malintenzionato di assumere il controllo di qualsiasi funzione lato client. – avgvstvs

+0

@avgvstvs se l'autore dell'attacco ha già avuto accesso alla possibilità di eseguire patch di scimmia, quindi in pratica può semplicemente fare qualsiasi cosa che sarebbe in grado di fare attraverso XSS. –

+0

@MatthijsWessels il mio punto è che come sviluppatore web, il front-end è semplicemente il * luogo sbagliato * per implementare * qualsiasi * tipo di prevenzione XSS, perché il server ha il controllo zero su ciò che accade nel browser. Il browser non è affidabile, sempre. – avgvstvs

0

Ho utilizzato il progetto di sanitizzazione HTML OWASP con molto successo.

https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project

I criteri possono essere definiti (o criteri predefiniti possono essere utilizzati), che consentono di controllare quali tipi di elementi HTML sono ammessi sulla stringa in fase di convalida/sterilizzate. Un listener può essere utilizzato in quanto l'HTML viene disinfettato per determinare quali elementi vengono rifiutati, offrendo flessibilità su come comunicarlo al client. Oltre ad un'implementazione semplice, mi piace anche questa libreria perché è prodotta e gestita da OWASP, un'organizzazione di lunga data il cui obiettivo è la sicurezza web.