Le entità di testo in HTML non possono fare nulla di interessante, e il contenuto tra tag span è interpretato come testo. Per fare qualcosa di interessante, devi iniettare una nuova entità (che è fatta usando <
e >
), o avrai bisogno di inserire il tuo input in una posizione non di testo (come i parametri di un'entità o all'interno di un blocco <script>
o simile). Se il tuo input non viene riflesso altrove, e <
e >
sono sempre codificati, non puoi sfruttare la pagina tramite XSS.
Tuttavia, potrebbero esserci modi per ingannare il server nell'inviare <
non codificato e >
senza che ciò significhi. Un modo che ho visto è di inviare caratteri Unicode che non sono <>
ma che il server potrebbe mappare a quei caratteri ASCII prima di rifletterci nell'output. Prendi in considerazione caratteri come ˂˃
, ‹›
, ≤≥
, <>
, ognuno dei quali può essere mappato a <>
da un server e quindi non essere codificato come < >
. Nessuna garanzia, ma succede.