funzionalità di prevenzione Grails XSS è piuttosto comodo, così ho abilitato utilizzando:Preserve nuove linee quando si utilizza il codec HTML in Grails viste
grails.views.default.codec = "html"
Anche se, questo crea un problema con html textareas
. Se completiamo un textarea
e usiamo Invio per interrompere le linee, le nuove linee vengono salvate nel DB, ma vengono ignorate nella vista. Potrei usare <%=%>
e replaceAll('\n',"<br>")
per correggere le interruzioni di riga, ma il codice HTML compilato nello textarea
non sarebbe stato scappato e non ci sarebbe stata alcuna prevenzione XSS!
Come risolverebbe questo problema?
Hey Antony, grazie per la risposta. Ho trovato una soluzione intermedia. Cosa ne pensi di mantenere l'enconding come "html" ma di elaborare i miei textareas con: <% = book? .description? .encodeAsHTML(). ReplaceAll ('\ n', '
')%>. Vedi qualche carenza in questa soluzione? – Pomario
La tua soluzione sembra OK. Non mi piace avere affermazioni così complicate ovunque nei miei GSP, ecco perché utilizzerei un TagLib. Se in seguito decidi che desideri racchiudere le righe nella stringa '
', devi solo cambiare TagLib. Ma hai ragione, se lo usi solo in un posto, quindi usando '<% = book? .description? .encodeAsHTML(). ReplaceAll ('\ n', '')%>' potrebbe essere la soluzione più veloce . – Antoine
Ho dovuto aggiungere staticEncodeAs = "raw" statico in LinesTagLib e usarlo come (Grails 2.3.6) –
CoPLaS