Perché dovrei convertire & in & nella prevenzione XSS?

6

Nella loro REGOLA # 1, OWASP suggerisce che & debba essere codificato come & prima che venga inserito in una pagina HTML. Tuttavia, nei seguenti casi:

<tag>userInput</tag>
<tag attribute="userInput"></tag>

Se sfuggo solo i quattro caratteri < , > . ' e " , ma non & , c'è qualche carico utile che potrebbe ancora causare XSS? O ci sono casi in cui & deve essere sottoposto a escape per impedire le vulnerabilità di XSS?

    
posta z3tt4 08.05.2018 - 05:53
fonte

3 risposte

3

Come dicono i commenti e dal tuo documento collegato:

Rule #1 is for when you want to put untrusted data directly into the HTML body somewhere. This includes inside normal tags like div, p, b, td, etc.

Quindi la tua domanda può essere risolta con "perché applichi la regola sbagliata per il tuo contesto".

Ma per citare anche la regola applicabile:

The reason this rule is so broad is that developers frequently leave attributes unquoted. Properly quoted attributes can only be escaped with the corresponding quote. Unquoted attributes can be broken out of with many characters, including [space] % * + , - / ; < = > ^ and |.

Quindi, sì, se costantemente e sempre usi le virgolette sugli attributi, devi solo sfuggire a quelli. Ma questo ha solo bisogno di un errore e le cose vanno a pezzi, quindi la regola generale è di essere più rigorosi del necessario.

    
risposta data 08.05.2018 - 12:02
fonte
1

Codificare & in &amp; non ti salverà da alcun attacco XSS, ma è necessario per codificare correttamente il testo che un utente inserisce in HTML.

Ad esempio, se non lo fai, un utente che vuole parlare di entità HTML e digita i cinque caratteri & a m p ; vedrà il sito mostrare i loro testo come & nel browser. Un utente che parla della prevenzione XSS spiegando < to &lt; vedrà il suo testo visualizzato sul sito come < to < , confondendo tutti. A meno che tu non avverta in modo specifico gli utenti che i loro post saranno (parzialmente) interpretati come HTML e che dovrebbero codificare in modo entità i propri messaggi, è una cosa che dovresti fare per correttezza, non necessariamente sicurezza.

    
risposta data 09.05.2018 - 02:01
fonte
-1

&quot; può essere dannoso, come suggerito da altri.

E con Simple DOM, anche le regole CORS possono essere ignorate.

Modifica: grazie a @Anders, il codice che avevo in precedenza dovuto funzionare non funzionava.

    
risposta data 08.05.2018 - 12:10
fonte

Leggi altre domande sui tag