我有以下流程:
- 向用户呈现一个表单。
- 他填写表单字段,然后提交给控制器,控制器将其保存到数据库
- 在另一个页面上,控制器从数据库中获取这条记录,并将其传递给视图
- 视图将其捕获为 JavaScript 变量:
var foo = '${user.bar}';
现在,如果用户以以下形式输入此字符串:
I have a quote - ' - very dangerous
然后报价会一直传递到数据库并返回,并产生一个corruptJavaScript 语句:
var foo = 'I have a quote - ' - very dangerous';
逃离这个角色的最佳地点是什么?如何?我不想为每个模板的使用手动执行此操作,这很乏味且容易出错。
数据就是数据。如果它包含引用,它就包含引用,并且必须以这种方式存储在数据库中。当将此 String 用作 JavaScript 字符串文字时,您需要转义引号。
您可以使用 Apache commons-langStringEscapeUtils.escapeECMAScript()
方法来做到这一点,或者您可以将 Java 对象编码为 JSON 字符串,并在 JavaScript 代码中解析 JSON 字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)