我正在编写一个非常简单的CRUD应用程序,它将用户素材存储到数据库中,以便其他同伴编码人员可以将它们组织为我们正在处理的项目。但是,在将用户输入保存到数据库之前,我遇到了一个消毒用户输入的问题。我无法从Story模型中调用sanitize()函数去除所有html /脚本。它要求我做到以下几点:用Ruby on Rails消毒用户输入
def sanitize_inputs
self.name = ActionController::Base.helpers.sanitize(self.name) unless self.name.nil?
self.story = ActionController::Base.helpers.sanitize(self.story) unless self.story.nil?
end
我想验证用户输入已经被消毒,而且我不确定的两件事情: 1)如果用户输入验证发生?在保存数据之前很明显,我认为,在我验证用户输入没有脚本/ html标记之前,我应该在验证之前,在验证之前或者在其他一些非明显区域处理这些东西? 2)为这个模型编写单元测试,除了比较“这是恶意代码示例”和sanitize(example)输出之外,我将如何验证脚本/ html是否被删除?
在此先感谢。
不完全是一个答案,但提醒:rails 3默认清理用户输入。 – kikito 2010-05-21 15:19:20