2010-03-23 17 views
13

Ho un tag HTML <textarea>$FOO</textarea> e la variabile $FOO verrà riempita con contenuti HTML e JavaScript arbitrari, da visualizzare e modificare all'interno dell'area di testo. Che tipo di "fuga" devo applicare a $ FOO?HTML: <textarea> -Tag: come eseguire correttamente l'escape del contenuto HTML e JavaScript visualizzato?

Per prima cosa ho cercato di evitarlo HTML ma questo non ha funzionato (come verrà mostrato non il codice HTML originale di $ FOO ma piuttosto il contenuto di escape. Questo ovviamente non è quello che voglio: voglio essere visualizzato l'escape HTML/JS contenuto della variabile ...

e 'impossibile visualizzare il contenuto HTML all'interno di un tag <textarea> ed inoltre permettono di essere modificabile come HTML completo?

grazie jens

+0

Questa è stata colpa mia: il problema era che il contenuto era sfuggito DUE volte. – jens

risposta

20

ho tought di scampo HTML

Sì, è vero. I contenuti di un <textarea> non sono diversi dai contenuti di altri elementi come <span> o <p>: se si desidera inserire del testo all'interno, è necessario eseguire l'escape HTML di qualsiasi < o & caratteri rispettivamente a &lt; e &amp;.

browser tendono a dare più margine di manovra con il markup guasto <textarea> s, in quanto il fallback per invalidi escape < simboli è quello di rendere loro come testo invece di tag, ma che non per questo è meno sbagliato o pericoloso (per XSS).

ma questo non funzionava

Si prega di inviare quello che hai fatto che non ha funzionato. L'escape dell'HTML è sicuramente la cosa giusta.

+0

Grazie per la risposta. Uso "Commons Velocity" che utilizza internamente un'altra libreria StringUtils di Apache per la codifica HTML. Devo scavare più a fondo, sembra che da qualche parte ci sia qualcosa che non va: mi dà <! - test - > Questo significa che c'è qualcosa di double escape. Grazie per la tua risposta, allora so che devo riprovare ulteriormente come evaderlo. – jens

+0

È possibile controllare se è stato impostato un riferimento a EscapeHtmlReference' ReferenceInsertionEventHandler in Velocity. Se è così, non avresti bisogno di fuggire di più. – bobince

+0

@bobince - Ho domande simili con l'uso dell'editor/disinfettante PageDown. Ti dispiacerebbe dare un'occhiata? Nel contesto di MVC3 non riesco a trovare il metodo corretto per codificare il mio contenuto TextArea prima di essere postato sul server: http://stackoverflow.com/questions/9073132/request-validation-when-posting-html-javascript- content-mvc3 e http://stackoverflow.com/questions/9071369/handling-code-blocks-with-markdown-pagedown –

2

è è necessario sostituire il carattere speciale di HTML con character references (eit i suoi riferimenti di carattere numerico o riferimenti di entità), in textarea, almeno &, < e >.

+0

ciao Gumbo, grazie per il tuo aiuto !!! Sembra che il problema sia che le librerie di escape non funzionano correttamente come dovrebbero. Grazie. – jens

Problemi correlati