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