【发布时间】:2012-06-11 07:41:22
【问题描述】:
我有以下流程:
- 向用户展示了一个表单。
- 他填写表单字段,然后提交给控制器,控制器将其保存到数据库中
- 在另一个页面上,控制器从数据库中获取此记录,并将其传递给视图
- 视图将其捕获为 javascript 变量:
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 -
如果您使用的是 Rythm 模板引擎,它可能是
var foo = '@user.bar.escapeJavaScript()';。有关 Rythm 模板引擎的更多信息,请查看playframework.org/modules/rythm
标签: playframework escaping playframework-1.x