5
Grails的XSS防护功能也很方便保存新的生产线,所以我启用它使用:在使用Grails中的HTML编码解码器观看
grails.views.default.codec = "html"
虽然,这将创建HTML textareas
问题。如果我们完成一个textarea
并使用Enter断开线条,则新线条将保存在数据库中,但它们在视图中将被忽略。我可以使用<%=%>
和replaceAll('\n',"<br>")
修复换行符,但填入textarea
的HTML代码不会被转义,并且不会有XSS预防!
你将如何解决这个问题?
嘿安东尼,感谢您的回复。我想出了一个中介解决方案。你怎么说保留引用为“html”,但处理我的textareas:<%= book?.description?.encodeAsHTML()。replaceAll('\ n','
')%>。你看到这个解决方案的缺点吗? – Pomario
您的解决方案看起来不错。我不喜欢在我的GSP中到处都有这样复杂的声明,这就是为什么我会使用TagLib。如果稍后您决定要在'
字符串
'中附加行,则只需更改TagLib。但是你是对的,如果你只在一个地方使用它,那么使用'<%= book?.description?.encodeAsHTML()。replaceAll('\ n','')%>'可能是最快的解决方案。 – Antoine
我不得不将静态defaultEncodeAs ='raw'添加到LinesTagLib中,并像 (Grails 2.3.6) –
CoPLaS