我有以下流程:
var foo = '${user.bar}';
现在,如果用户以下列形式输入此字符串:
I have a quote - ' - very dangerous
然后引号一直传递到数据库并返回,并导致损坏的 javascript语句:
var foo = 'I have a quote - ' - very dangerous';
逃避这个角色的最佳位置是什么?以及如何?我不想手动为每个模板使用它,这很乏味且容易出错。
答案 0 :(得分:4)
数据是数据。如果它包含引号,则它包含引号,并且必须以这种方式存储在数据库中。使用此String作为JavaScript字符串文字时,您需要转义引号。
您可以使用Apache commons-lang StringEscapeUtils.escapeECMAScript()
方法来执行此操作,或者您可以将Java对象编码为JSON字符串,并在JavaScript代码中解析JSON字符串。