在 Rails 4.2.4 中,假设我有一个带有文本字段的表单,用户可以在其中输入他们想要的任何内容。我根本不清理输入。然后用户将表单提交到如下所示的 Controller 方法:
def datahandler
@data = params[:usersdata]
end
然后在相关 View “datahandler.html.erb”中,我有以下内容:
<%= @data %>
应该是一个巨大的XSS漏洞吧?好吧,看起来 Rails 现在自动将字符串对象中的某些字符转换为 CDATA 表示以供其 View 使用。这似乎至少打破了我发现的 XSS 攻击示例。
但是,由于我不是 XSS 漏洞方面的专家,因此我不太愿意在没有进行一些研究的情况下依赖这种机制。此外,Rails Guides似乎没有谈论这个功能,即使在他们的安全指南中也是如此(他们谈论防御 XSS 但他们没有提到这个功能)。我找不到关于此的任何文档。
谁能给我指点有关此功能的一些文档?如果没有,有谁知道这种保护有什么漏洞吗(请举例说明)?
最佳答案
Rails 的常用 XSS 保护非常防弹。
默认行为是 changed in Rails 3 , 以“在所有 View 模板中默认转义 HTML 输出...”。尽管在某些情况下 escaping needed to be adjusted , 大多数known XSS vulnerabilities in Rails有not been centered around this functionality .
无论如何,您问题中的代码应该非常安全。当前 Rails 中 XSS 保护的主要问题是由 developers misunderstanding the mechanics of the process 引起的.抽空fully understand the implementation将确保您不会无意中引入 XSS 错误,尽管有内置保护。
关于ruby-on-rails - Rails 的常用 XSS 保护有多防弹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295672/