Вопрос по playframework-1.x, playframework, escaping – Где найти подходящее место для кавычек в Play Framework?

3

У меня есть следующий поток:

A user is presented with a form. He fills in the form fields, and submits to the controller, which persists this to the DB On another page, the Controller gets this record from the DB, and passes it to the view The view captures it as a javascript variable: var foo = '${user.bar}';

Теперь, если пользователь вводит эту строку в виде:

I have a quote - ' - very dangerous

затем цитата проходит через всю базу данных и обратно, и в результатеcorrupt заявление javascript:

var foo = 'I have a quote - ' - very dangerous';

Как лучше всего избежать этого персонажа и как? Я не хочу делать это вручную для каждого использования шаблона, это утомительно и подвержено ошибкам.

Я только что нашел модуль расширений Java. Это действительно лучшее, что мы можем сделать - использовать это${user.bar.addSlashes().raw()}? Это довольно многословно и подвержено ошибкам.playframework.org/documentation/1.2.4/javaextensions ripper234
Если вы используете шаблонизатор Rythm, это может бытьvar foo = '@user.bar.escapeJavaScript()'; , Проверьтеplayframework.org/modules/rythm для больше о шаблонном движке Rythm Gelin Luo

Ваш Ответ

1   ответ
4

он содержит цитату и должен храниться таким образом в базе данных. Вы должны избегать кавычек при использовании этой строки в строковом литерале JavaScript.

Вы можете использовать Apache Commons-LangStringEscapeUtils.escapeECMAScript() метод, чтобы сделать это, или вы можете закодировать ваши объекты Java в строки JSON и проанализировать строку JSON в вашем коде JavaScript.

Когда я генерирую HTML, Play обрабатывает экранирование для меня, нет? Возможно, я надеюсь, что еще один оператор игры сократит многословие ...$$user.foo$$, Я думаю, что это, вероятно, не существует сейчас, даже в стороннем модуле. Я приму ваш ответ на данный момент. ripper234
Разве этот подход не является многословным и подвержен ошибкам? Это лучшее, что у нас есть сейчас? ripper234
На что именно вы надеетесь? Волшебный инструмент, который будет знать, что вы генерируете буквенную строку JS, и который волшебным образом спасет вас от чего-либо? Когда вы генерируете HTML, вы должны html-экранировать свои строки. Когда вы генерируете строки JS, вы должны JS-экранировать свои строки.
По умолчанию он выполняет экранирование HTML:stackoverflow.com/questions/5764679/… ripper234
Кстати, см. Также мой комментарий выше о модуле расширений Java. ripper234

Похожие вопросы