Проверьте или подтвердите authenticity_token в приложении Rails 3 - PullRequest
0 голосов
/ 13 декабря 2018

Мне интересно, какие у меня есть варианты для повышения безопасности в Rails 3. Например, если я создам ванильное приложение Rails 3 и создаю одну модель Task и одно поле Name.Затем перейдите на localhost: 3000 / tasks / new, осмотрите страницу и измените authenticity_token на «тест». Я могу отправить форму.Если я использую тот же вариант использования в приложении на Rails 5, я получаю исключение:

ActionController::InvalidAuthenticityToken in TasksController#create
ActionController::InvalidAuthenticityToken
Extracted source (around line #195):
        def handle_unverified_request
          raise ActionController::InvalidAuthenticityToken
        end
      end
    end

Похоже, что Rails 3 имеет несколько дополнительных методов, связанных с CSRF: https://api.rubyonrails.org/v3.2.16/classes/ActionController/RequestForgeryProtection.html будет любым из этих адресовэтот вариант использования?

1 Ответ

0 голосов
/ 14 декабря 2018

Я обнаружил, что если я смотрю консоль, я вижу WARNING: Can't verify CSRF token authenticity, когда меняю authenticity_token.Поэтому Rails 3 знает, что токен неправильный, он просто ничего с этим не делает.

Я обнаружил, что могу реализовать handle_unverified_request , добавив его в мой контроллер приложения:

class ApplicationController < ActionController::Base
  protect_from_forgery

  def handle_unverified_request
      raise ActionController::InvalidAuthenticityToken
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...