2011-06-02 39 views
0

我在寻找我主要是找到方法来净化数据输出或使用消毒单输入框时:如何在Rails 2.3.x中对创建对象进行清理?

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

不过,我创建了以下这样一个对象:

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

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

+1

你为什么要这样做? – Bohdan 2011-06-02 07:57:43

+0

'h'负责处理HTML,这对你来说无关紧要。将内容插入到数据库中。在这种情况下,您应该担心SQL注入等问题,如果您使用AR(正确),那么Rails也可以防止这种情况。 - 从这个意义上说,我认为你不会找到一种优雅的/ Rails-y的方式去做你正在寻找的东西,因为它不常用。 – polarblau 2011-06-02 08:09:33

+0

我想我有点困惑......如果Rails已经关注SQL注入,那么这是哪种场景:['name =?',params [:name]]用于? – nitindhar7 2011-06-02 20:41:55

回答

0

如果这是出于优化原因,请使用'Sanitize'宝石。但是,既然你谈论的是为每一个领域做这件事,那么这里有些东西闻起来有点不对劲。 ActiveRecord已经逃避了输入以避免SQL注入问题,但是你不需要HTML转义进入你的数据库的每一件事情(如果你想以某种方式处理原始数据)。出于性能方面的原因,您可能想要在进入数据库之前进行净化的唯一内容是诸如Rich Text Editor输入字段之类的东西,例如来自TinyMCE的数据,您实际上想要根据白名单过滤数据,而不是只需简单的字符串转换就可以逃脱它

相关问题