我正在构建一个 Backbone.js 应用程序,并且想知道在使用 Backbone.js 时处理 XSS 和 HTML 转义的最佳方法是什么。
在来自官方 Backbone.js 文档的基本Todos 示例应用程序中,数据没有转义。由于此数据在模板中用于呈现待办事项条目,因此可以通过输入以下文本来执行 Javascript 代码(可以在上面的链接中复制):
"><script>alert('xss');</script>
当使用 REST 服务器作为存储后端时,这个 XSS 对每个用户都是持久的。
你怎么解决这个问题?
我的想法是转义服务器上的数据,因此返回的数据可以安全地在模板中使用。那么我是否必须始终使用wait: true
, 以确保没有呈现未转义的数据?对于编辑,添加另一个带有未转义数据的属性,然后可以使用它来填充文本字段.val()
?
或者在渲染模板之前,您是否不执行这些操作并转义客户端上的数据?