Javascript Backbone.js和XSS/HTML转义

Javascript Backbone.js和XSS/HTML转义,javascript,backbone.js,escaping,xss,Javascript,Backbone.js,Escaping,Xss,我正在构建一个Backbone.js应用程序,我想知道在使用Backbone.js时处理XSS和HTML转义的最佳方法是什么 在官方Backbone.js文档的basic中,数据不会转义。由于该数据在模板中用于呈现todo条目,可以通过输入以下文本执行Javascript代码(可在上面的链接中复制): 警报('xss'); 当使用REST服务器作为存储后端时,此XSS对每个用户都是持久的 你如何解决这个问题 我的想法是转义服务器上的数据,以便在模板中使用返回的数据是安全的。然后我是否必须始终使

我正在构建一个Backbone.js应用程序,我想知道在使用Backbone.js时处理XSS和HTML转义的最佳方法是什么

在官方Backbone.js文档的basic中,数据不会转义。由于该数据在模板中用于呈现todo条目,可以通过输入以下文本执行Javascript代码(可在上面的链接中复制):

警报('xss'); 当使用REST服务器作为存储后端时,此XSS对每个用户都是持久的

你如何解决这个问题

我的想法是转义服务器上的数据,以便在模板中使用返回的数据是安全的。然后我是否必须始终使用
wait:true
,以确保没有呈现未转义数据?对于编辑,请使用未转义数据添加另一个属性,然后可以使用
.val()
填充文本字段


或者,在呈现模板之前,您是否不执行这些操作并转义客户端上的数据?

Todo示例不是最干净的示例。它使用如下方法:

<input class="edit" type="text" value="<%= title %>" />


要正确转义HTML,请使用
主干中的标准方法是使用
model.escape(属性)

从主干文档:

与get类似,但返回模型属性的HTML转义版本。如果要将模型中的数据插入HTML,使用escape检索属性将防止XSS攻击。”

var hacker=new Backbone.Model({
名称:“警报('xss')”
});
警报(hacker.escape('name'));

关于模型的转义函数呢?看起来这个示例现在已经修复。我认为这是一个错误的答案,根据中的标记和@Nitanshu应该完全相反。答案是正确的。Todo示例使用,它确实使用了

<input class="edit" type="text" value="<%= title %>" />
<input class="edit" type="text" value="<%- title %>" />
var hacker = new Backbone.Model({
    name: "<script>alert('xss')</script>"
});

alert(hacker.escape('name'));