Ruby on rails discussion.js和;熟食;串

Ruby on rails discussion.js和;熟食;串,ruby-on-rails,ember.js,xss,discourse,Ruby On Rails,Ember.js,Xss,Discourse,我一直在回顾Distance.js的源代码,这是一个用Ember/Rails/Postgres编写的讨论论坛。我正在研究在这类应用中避免XSS漏洞的最佳实践 我注意到话语使用了“煮熟的”字符串的概念,这是部分预转义的字符串,用于诸如帖子正文之类的东西,然后使用三重胡须({{}})在余烬中显示它们 然而,在其他情况下,例如文章标题,话语发送和接收原始的、未替换的字符串,例如“关于标签的这个和那个”,并使用双胡须显示它们{{{}) 关于这一切,我有以下问题: (1) 话语似乎只在支持降价的领域使用“

我一直在回顾Distance.js的源代码,这是一个用Ember/Rails/Postgres编写的讨论论坛。我正在研究在这类应用中避免XSS漏洞的最佳实践

我注意到话语使用了“煮熟的”字符串的概念,这是部分预转义的字符串,用于诸如帖子正文之类的东西,然后使用三重胡须(
{{}}
)在余烬中显示它们

然而,在其他情况下,例如文章标题,话语发送和接收原始的、未替换的字符串,例如“关于标签的这个和那个”,并使用双胡须显示它们{
{{}

关于这一切,我有以下问题:

(1) 话语似乎只在支持降价的领域使用“烹饪”,比如post body。烹饪仅仅是处理后处理降价领域的一种方式,还是它也旨在解决XSS问题

(二)将原始字符串(包括看起来像HTML标记或实际上是HTML标记的东西)以JSON形式从服务器传递到客户端,这难道不被视为XSS漏洞吗?一些XSS嗅探器显然抱怨此类事情,一些人似乎建议在服务器上进行HTML实体转义和/或清理。

1)不是确切地知道Distance在这里做什么。因为markdown被呈现为HTML,所以它需要使用未经scaped的输出。否则,从markdown生成的HTML将被转义。Distance在源代码中似乎有HTML净化,尽管我不确定它何时被应用

2) 我会说不。JSON不是一种可执行格式。因此,只要文本被视为文本等,那么就没有问题。一般来说,不转义服务器端的一个很好的理由是使用本机控件显示文本的移动应用程序。单页应用程序和移动应用程序可以使用相同的JSON api,但转义不会被忽略移动应用程序必需。此外,转义需要上下文。OWASP XSS预防备忘单定义了一组需要不同转义的上下文。因此,服务器上的单个转义可能是错误的