No, se "
è correttamente scappato non c'è modo di andare oltre il valore dell'attributo HTML.
Il tuo browser analizza l'HTML come una macchina a stati. Per verificare quali transizioni di stato sono possibili con i tuoi caratteri disponibili, puoi cercare lo stato in specifica della sintassi HTML5 . Nel tuo caso, queste sono le opzioni:
8.2.4.38 Attribute value (double-quoted) state
Consume the next input character:
U+0022 QUOTATION MARK (")
Switch to the after attribute value (quoted) state.
U+0026 AMPERSAND (&)
Switch to the character reference in attribute value state, with the additional allowed character being U+0022 QUOTATION MARK (").
U+0000 NULL
Parse error. Append a U+FFFD REPLACEMENT CHARACTER character to the current attribute's value.
EOF
Parse error. Switch to the data state. Reconsume the EOF character.
Anything else
Append the current input character to the current attribute's value.
Come puoi vedere, l'unico modo per uscire dal stato del valore dell'attributo è tramite le virgolette corrispondenti ( "
o '
rispettivamente). Qualsiasi altro carattere aggiunge semplicemente al valore dell'attributo corrente. Anche le parentesi angolari e i caratteri di controllo non hanno alcun significato speciale all'interno di un attributo.
Quindi, in questo caso particolare è anche irrilevante come vengono gestiti <
e >
. Questo è il trigger non :
<input type="text" value="<script>alert('No bounty for you.')</script>">