Grails XSS funkcjonalność profilaktyka jest bardzo poręczny, więc włączony go za pomocą:Zachowaj nowych linii przy użyciu kodeka HTML w Grails postrzega
grails.views.default.codec = "html"
Choć ta stwarza problem z HTML textareas
. Jeśli wypełnimy textarea
i użyjemy Enter, aby przerwać linie, nowe linie zostaną zapisane w DB, ale są one ignorowane w widoku. Mogłabym użyć <%=%>
i replaceAll('\n',"<br>")
, aby naprawić przerwy w linii, ale kod HTML wypełniony w textarea
nie zostałby zmieniony i nie byłoby żadnej prewencji XSS!
Jak można rozwiązać ten problem?
Antony Hej, dzięki za odpowiedź. Wymyśliłem rozwiązanie pośredniczące. Co mówisz o zachowaniu encondingu jako "html", ale przetwarzaniu moich tekstów za pomocą: <% = book? .description? .encodeAsHTML(). ReplaceAll ('\ n', '
')%>. Czy widzisz jakieś niedociągnięcia w tym rozwiązaniu? – Pomario
Twoje rozwiązanie wygląda OK. Nie lubię mieć tak skomplikowanych stwierdzeń wszędzie w moich GSP, dlatego używałbym TagLib. Jeśli później zdecydujesz, że chcesz zamknąć linie w '
string
', musisz zmienić tylko TagLib. Ale masz rację, jeśli używasz tego tylko w jednym miejscu, to używanie '<% = książka? .pisywanie? .encodeAsHTML(). ReplaceAll ('\ n', '')%>' może być najszybszym rozwiązaniem . – Antoine
Musiałem dodać statyczne defaultEncodeAs = 'raw' do LinesTagLib i używać go jak (Grails 2.3.6) –
CoPLaS