当前位置:  开发笔记 > 前端 > 正文

使用Ruby on Rails清理用户输入

如何解决《使用RubyonRails清理用户输入》经验,为你挑选了1个好方法。

我正在编写一个非常简单的CRUD应用程序,该应用程序将用户故事存储到数据库中,以便其他编码人员可以为我们正在处理的项目组织它们.但是,在将用户输入保存到数据库之前,我遇到了清理用户输入的问题.我无法从Story模型中调用sanitize()函数来去除所有的html /脚本.它要求我做以下事情:

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标记之前,我应该在验证之前处理Controller中的这些内容,还是其他一些非显而易见的区域?2)为此模型编写单元测试,除了将"这是恶意代码示例"与清理(示例)输出进行比较之外,如何验证脚本/ html是否被删除?

提前致谢.



1> Vlad Zlotean..:

有两种方法可以消除XSS漏洞:

A.在将内容存储到数据库之前过滤内容(您要做的是什么).这里有2个插件可以帮到你.

xss_terminate

acts_as_sanitiled

B.在显示内容时过滤内容(Rails 3默认情况下会这样做).您可以使用该h功能或使用rails_xss.

至于你的第二个问题,我想你的单元测试应该只测试消毒方法被调用,而不是它本身的功能(让一个基本的例子一个简单的断言应该做的伎俩).默认情况下,清理功能/插件已经过很好的测试.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有