【问题标题】:How to sanitize an object on create in Rails 2.3.x?如何在 Rails 2.3.x 中清理创建对象?
【发布时间】:2011-06-02 06:04:07
【问题描述】:

在我的搜索中,我主要找到了在输出或清理单个输入框时清理数据的方法:

<%=h @name %> OR ['name = ?', params[:name]]

但是,我正在创建一个像这样的对象:

@user = User.new( params[:user] )

现在,我可以一个一个地清理 params[:user] 哈希中的每个键,但我确信还有一种更优雅的技术。

【问题讨论】:

  • h 负责处理 HTML,这对你来说并不重要,例如将内容插入数据库。在这种情况下,如果您(正确地)使用 AR,您应该担心诸如 SQL 注入之类的事情,Rails 也可以防止这种情况。 ——从这个意义上说,我认为你不会找到一种优雅/Rails 的方式来做你正在寻找的事情,因为它并不常见。
  • 我想我有点困惑......如果 Rails 已经处理了 SQL 注入,那么这个:['name = ?', params[:name]] 用于哪些场景?

标签: ruby-on-rails object sanitize oncreate


【解决方案1】:

如果这是出于优化原因,请使用“Sanitize”gem。但是,由于您谈论为每个领域都这样做,所以这里有些不对劲。 ActiveRecord 已经转义输入以避免 SQL 注入问题,但是您不需要对进入数据库的每一件事进行 HTML 转义(如果您想以某种方式处理原始数据,这样做可能会导致以后出现问题)。出于性能原因,您可能希望在它们进入数据库之前对其进行清理,例如富文本编辑器输入字段,例如来自 TinyMCE 的数据,您实际上希望根据白名单过滤数据,而不是只需通过简单的字符串转换将其转义即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2015-03-25
    • 2011-10-12
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多