Stripes Framework: как отключить экранирование строк в формах - PullRequest
4 голосов
/ 11 февраля 2011

Я использую фреймворк Stripes для реализации веб-приложения. Чтобы избежать всевозможных атак, текст хранится в БД в санированном состоянии, а процесс санации включает в себя кодирование сущностей HTML.

Моя проблема появляется, когда я делаю форму с полосами. Когда форма начинается пусто, все в порядке. Однако, когда пользователь ранее ввел что-то в эту форму, и что существующие значения извлекаются из БД, устанавливаются в компоненте действия и затем отображаются тегами формы полосы, полоса снова выходит из нее. Это приводит к двойному экранированию моей строки.

Есть ли в любом случае, я могу сказать полосам, что я знаю, что я делаю, и строка, которую я даю вам, уже сбежала?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Кажется, лучшее решение - просто не использовать полосы для проблемных полей. Если в вашем JSP вы замените, например:

<stripes:textarea name="userEntryComment"/>

с

<textarea name="userEntryComment">${actionBean.userEntryComment}</textarea>

Кроме полос не вызывается вообще для генерации HTML второй версии. Кроме того, поскольку в этом случае мы не используем тег , строка не экранируется.

0 голосов
/ 14 февраля 2011

Кодирование и декодирование HTML-сущностей обрабатывается Stripes, поэтому в действительности нет необходимости хранить закодированные HTML-сущности в базе данных.Просто удалите кодировку HTML-сущностей из процесса очистки, и Stripes будет надежно обрабатывать данные.

Есть еще один момент, который нужно сделать: хранение данных модели может считаться плохой практикой ( модель MVC!) в формате представления, таком как HTML.И сущности HTML, конечно, также являются данными в формате HTML.Они будут ограничивать / препятствовать использованию данных при выполнении любых других действий, таких как поиск, отправка текстовых сообщений по электронной почте и т. Д. И т. Д.

...