Защита Rails CSFR: правильно ли писать before_filter? - PullRequest
0 голосов
/ 05 ноября 2011

Контроллер моего приложения выглядит так:

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :check_csrf
  def check_csrf
    if not verified_request?
      redirect_to root_url, :error => "forgery protection"
      return
    end
  end
end

Без check_csrf Rails записывает предупреждение на консоль сервера о неверных ответах, затем выполнение продолжается как обычно. Поэтому мне пришлось написать свой собственный check_csrf. Теперь работает нормально. Это правильно? Есть ли более простой способ остановить выполнение неверного запроса?

Версия Rails: 3.1.

1 Ответ

2 голосов
/ 27 ноября 2011

Я думаю, вы должны переопределить handle_unverified_request .

Примерно так:

class ApplicationController < ActionController::Base
  protect_from_forgery

  protected
    def handle_unverified_request
      redirect_to root_url, :error => "forgery protection"
    end
end
...