【发布时间】:2015-05-05 20:34:16
【问题描述】:
这似乎是旧框架(Django、Rails)中已解决的问题,但我终生无法在 Express 中找到解决方案。
单页 webapps 中一个超级常见的模式是使用模板数据创建 html,然后将相同的数据作为 JSON 回显到客户端,以便它可以维护状态。
each comment as comments
div= comment
script.
var comments = !{JSON.stringify(comments)}
显然这是不安全的,因为用户可以轻松创建关闭脚本标签并执行各种讨厌的评论。那么处理这个问题的正确方法是什么?
我见过有人声称你可以过得很好
JSON.stringify(comments).replace(/<\//g, '<\/')
但这似乎很幼稚,尤其是在与健忘的大型团队合作时。
同样,我写了一个函数,它在字符串化之前递归地转义 html,但是在每个字符串中用 &quot; 替换 " 似乎有点矫枉过正,不利于数据绑定。
编辑
供参考,这里是Django的解决方案https://docs.djangoproject.com/en/dev/ref/templates/builtins/#escapejs
【问题讨论】:
标签: javascript node.js express pug