L'html è sufficiente per mitigare xss nell'attributo html se il valore è racchiuso tra virgolette doppie

1

Come menzionato in Owasp Output_Encoding_Rules_Summary perché dobbiamo sfuggire a tutti i caratteri tranne i caratteri alfanumerici [escape tutti i caratteri con l'HTML Entity & #xHH; formato, compresi gli spazi].

È possibile eseguire un attacco xss se un attributo html è racchiuso tra virgolette doppie (") e stiamo eseguendo l'escape di solo cinque caratteri

Nota: escl. javascript: protocolli in src / href

Convert & to &amp; Convert < to &lt; Convert > to &gt; Convert " to &quot; Convert ' to &#x27;

    
posta akr 23.11.2016 - 14:21
fonte

1 risposta

1

No, non è possibile (si noti però che la regola riguarda gli attributi HTML comuni e che altri attributi come href, src, style e gestori di eventi sono specificatamente esclusi).

La ragione per cui la regola esiste è data nello stesso documento che citi:

Except for alphanumeric characters, escape all characters with ASCII values less than 256 with the &#xHH; format (or a named entity if available) to prevent switching out of the attribute. 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 |.

L'esclusione di attributi non comuni è effettivamente rilevante nella pratica. Considera questo ad esempio:

<img src="no" onerror="alert('[some user input]')">

Un utente malintenzionato può eseguire un attacco XSS tramite ');alert('1 se le virgolette singole sono solo codificate in HTML. L'input verrebbe trasformato in &#39;);alert(&#39;1 , che sarebbe analizzato dal parser HTML del browser, che quindi lo passerà, in forma decodificata, al motore JavaScript.

    
risposta data 23.11.2016 - 14:29
fonte

Leggi altre domande sui tag