【问题标题】:Ember Data Model attribute sanitization/escaping to prevent XSS?Ember 数据模型属性清理/转义以防止 XSS?
【发布时间】:2014-10-21 10:22:21
【问题描述】:

如何对字符串属性执行清理以防止 XSS?现在我的想法是覆盖我的基本模型的保存方法并迭代模型中的所有字符串并将所有字符串输入设置为安全字符串。这是解决这个问题的好方法还是有更好的方法?

编辑:

在应用中为某人保存名称属性 (alert('xss')) 时出现问题。它以未经清理的方式将其保存到数据库中。然后将该名称加载到我们的另一个站点中,该站点不会清理输出,这就是脚本注入发生的地方!我想在将其保存到数据库之前对其进行消毒

【问题讨论】:

  • 老实说,这听起来更像是服务器端的问题。通过防止数据库中的错误数据,无论它是如何到达那里的,您都将解决一次问题。如果您将来有不同的用户界面,您不希望也对其进行清理。
  • ^ 我同意。这是最有意义的。因为恶意的人可能会发布绕过清理的恶意请求。

标签: ember.js escaping ember-data xss sanitization


【解决方案1】:

Handlebars 自动清理字符串。如果你想避免这种情况,你必须明确地使用三括号语法:

{{{myHtmlString}}}

【讨论】:

  • 问题不是 ember 应用程序中的脚本注入。让我编辑我的问题,以便您了解我的意思。
【解决方案2】:

与其尝试清理输入,您真的应该更改该其他站点,以确保它以 html 转义从数据库中呈现的数据。即使你会在 Ember 端“清理”一些东西,你能保证没有其他漏洞允许某人在数据库中注入 HTML 吗?

总是逃避任何呈现的东西确实是处理 XSS 的唯一安全方法。如果您正在过滤输入,您很可能无法捕捉到注入意外输入的所有可能方式。

【讨论】:

  • 我同意你的看法。虽然我认为如果有人忘记在其他地方转义文本,转义输入也很重要
  • 即使您正在过滤输入,您也可能会得到您没想到的字符,您没想到的字符集(精心设计以绕过过滤器并在不同的字符集中产生不同的结果) .你必须有一个你想要通过的任何东西的白名单,这很可能最终过于严格。转义输出更容易、更安全。
  • 你能给我一个我不期望的字符的例子吗?如果我使用车把转义方法,我不应该安全吗?
  • 安全,是的。但是通过github.com/wycats/handlebars.js/blob/master/lib/handlebars/… 你会逃避/[&<>"'``]/g,有些人的名字或街道地址中确实有这些字符。然后,您将在某个时候在输出上对它们进行双重编码,您最终可能会得到例如O’Neil.
  • 我开始明白你的意思了。不过,你是怎么得到“O’Neil”的?我假设它是双重编码的......之前是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2017-08-20
相关资源
最近更新 更多