我正在构建一个Backbone.js应用程序,我想知道在使用Backbone.js时,分别处理XSS和HTML转发的最佳方法是什么.
在官方Backbone.js文档的基本Todos示例应用程序中,数据不会被转义.由于此数据在模板中用于呈现待办事项条目,因此可以通过输入以下文本来执行Javascript代码(可以在上面的链接中重现):
"><script>alert('xss');</script>
Run Code Online (Sandbox Code Playgroud)
使用REST服务器作为存储后端时,此XSS对每个用户都是持久的.
你怎么解决这个问题?
我的想法是逃避服务器上的数据,因此返回的数据可以安全地用在模板中.那么我是否必须始终使用wait: true,以确保没有未转义的数据被呈现?要进行编辑,请使用未转义的数据添加另一个属性,然后可以使用该属性填充文本字段.val()?
或者,在渲染模板之前,您是否不执行此操作并转义客户端上的数据?
我正在为网站实施OpenID身份验证,我想获取用户的电子邮件地址.我们用户的所有电子邮件地址都通过常用的哈希链接邮件进行了修改.
现在,OpenID提供商通过SimpleRegistration或AttributeExchange返回的电子邮件地址通常不"值得信赖",因为任何人都可以运行提供商并使用他喜欢的任何电子邮件地址添加身份.但是你能肯定的是,谷歌或雅虎提供商(或者其他大型提供商)返回的地址只返回已经验证的gmail.com/yahoo.com地址,这样我就可以跳过to-activate-click-the-hash-这些提供商的链接程序?