我正在尝试在我的rails 2.0.2应用中实现Safe Erb插件。我是 将此版本与Ruby 1.8.7一起用于项目特定目的。
我参考了以下教程:
http://www.railslodge.com/plugins/430-safe-erb http://agilewebdevelopment.com/plugins/safe_erb
我只能对上面的Url有所了解,因为我是新手 Rails和Rails相关的插件。我老实说也发现了上面的内容 教程非常通用。
在上面的教程中,我真的也无法在很大程度上将这个插件与现实世界的意义联系起来。你能不能请教我在日常现实世界中的用法......?
我已经实现了一个书籍appl,它有作者,标题和 出版日期。我目前正面临实施污点的问题 这个插件的功能
在第二个教程中,他们说我们需要打电话给受污染的人?方法 来自Objects类。我在我的创建方法中完成了这个 books_controller.rb。 create方法的代码如下所示:
def create
@book = Book.new(params[:book])
@book.publishing_date = params[:publishing_date]
respond_to do |format|
if @book.save
flash[:notice] = 'Book was successfully created.'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created,
:location => @book }
else
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status =>
:unprocessable_entity }
end
if @book.tainted?
flash[:notice] = 'Books are tainted'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created,
:location => @book }
else
flash[:notice] = 'Books aren\'t tainted'
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status =>
:unprocessable_entity }
end
end
创建新书记录后,我收到通知,说“书籍没有被污染”。我有 将此插件复制到我的vendor / plugins目录中。
根据第二个教程网址,他们说“字符串变得污染了 它是从IO读取的,例如从DB或HTTP请求读取的数据。“
但是当我尝试创建新书记录时,我的情况并没有发生。 我是否需要显式污染我正在使用的字符串输入(它当前 在varchar中根据数据库类型 - 我想这应该不是问题)。如是 你能不能告诉我怎么做。
OR
如果不是上述情况..我错过了什么吗?
对此的任何见解都会非常感激。
谢谢..
答案 0 :(得分:2)
首先,如果您可以继续使用rails 3和ruby 1.9.2,请执行此操作。这几乎肯定是值得的。 Rails 2.0.2于2007年发布,至少已有3年历史。 Rails 3提供了比这个插件更好的保护,开箱即用。
话虽如此,safe-erb似乎提供了一些xss保护。通过https://github.com/abedra/safe-erb的插件版本,您无需在应用中的任何位置执行任何特殊操作即可使其正常运行。只需在vendor / plugins中安装插件即可开始使用。您的控制器应该看起来就像没有插件一样。您可以取消if污染块。
此插件的工作方式是连接到rails处理队列的各个部分,并进行一些污点管理,以便在没有未转义的用户文本时,您的视图会自动抛出错误。要使用它,您无需在模型和控制器中执行任何操作。在您的视图中,确保数据在显示之前通过h
传递。