ruby-on-rails - Rails 的常用 XSS 保护有多防弹?

标签 ruby-on-rails ruby ruby-on-rails-4 xss

在 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 Railsnot 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/

相关文章:

ruby-on-rails - 如何向 has_many 关联添加更有意义的错误消息?

ruby-on-rails - 当我想要 rails 中的全局对象时,如何避免常量?

ruby-on-rails - rails 4 : how to implement routes for a many-to-many relationship?

ruby-on-rails - 搜索给定不同货币价格范围的型号

ruby-on-rails - 如何将 rvm 与 eclipse 的设置绑定(bind)

ruby-on-rails - 带有自定义处理器的 CarrierWave 未注册

ruby-on-rails - 在循环运行时无法使用 ruby​​ on Rails 中的标签选择单选按钮?

ruby-on-rails - 如何在注册和身份验证失败时重定向 Devise?

ruby-on-rails - 没有数据库的 Rails 模型

ruby-on-rails - NoMethodError in Pages#home undefined method `environment' for nil :NilClass