Вопрос внедрения плагина Safe Erb - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь реализовать плагин Safe Erb в моем приложении rails 2.0.2. я использование этой версии для конкретных проектов вместе с Ruby 1.8.7.

Я ссылался на следующие уроки:

http://www.railslodge.com/plugins/430-safe-erb http://agilewebdevelopment.com/plugins/safe_erb

Я мог иметь только некоторый смысл вышеупомянутых URL, поскольку я новичок в Rails и Rails связанные плагины. Я, честно говоря, также нашел выше учебники должны быть очень общими.

Я действительно не мог связать использование этого плагина в значительной степени с точки зрения реального мира из вышеприведенных уроков. Не могли бы вы рассказать мне о его использовании в повседневной жизни ...?

Я реализовал приложение для книг, в котором есть автор, название и дата публикации. В настоящее время я сталкиваюсь с проблемами при внедрении особенность этого плагина

Во втором уроке они говорят, что мы должны называть испорченными? метод из класса объектов. Я сделал это в моем методе создания моего 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.

Согласно второму URL учебника, они говорят: «Строка становится испорченной, когда он читается из ввода-вывода, например, из базы данных или из HTTP-запроса. "

Но в моем случае этого не происходит, когда я пытаюсь создать новую запись в книге. Нужно ли явно портить вводимые мной строки? в VARCHAR по типам БД - я думаю, это не должно быть проблемой). Если да не могли бы вы сказать мне, как это сделать.

OR

если дело не в вышеуказанном случае .. Я что-то упустил?

Любая идея по этому вопросу будет очень признательна.

Спасибо ..

1 Ответ

2 голосов
/ 10 февраля 2011

Для начала, если вы можете перейти к рельсам 3 и ruby ​​1.9.2, сделайте это. Это почти наверняка будет стоить усилий. Rails 2.0.2 был выпущен в 2007 году и ему не менее 3 лет. Rails 3 обеспечивает лучшую защиту, чем этот плагин, прямо из коробки.

Сказав это, safe-erb, по-видимому, обеспечивает некоторую защиту xss. Просматривая версию плагина на https://github.com/abedra/safe-erb,, вам не нужно делать ничего особенного в вашем приложении, чтобы оно заработало. Просто установите плагин в vendor / plugins, и все готово. Ваш контроллер должен выглядеть так же, как и без плагина. Вы можете покончить с зараженным блоком.

Способ, которым работает этот плагин, заключается в подключении к различным частям очереди обработки рельсов и выполнении некоторого управления заражениями, чтобы ваши представления автоматически выдавали ошибку всякий раз, когда есть пользовательский текст без выхода из системы. Чтобы использовать его, вам не нужно ничего делать в ваших моделях и контроллерах. В ваших представлениях, убедитесь, что данные передаются через h перед отображением.

...