Я работаю в устаревшем рельсовом приложении и пытаюсь устранить некоторые уязвимости CSRF. Если я удалю скрытое поле CSRF из формы, я все равно смогу успешно отправить форму.
Единственным признаком того, что что-то не так, является предупреждение в журналах: WARNING: Can't verify CSRF token authenticity
.
Есть некоторые страницы, где protect_from_forgery
будет перехватывать запрос, и приложение будет обрабатывать sh, если токена csrf нет, но его попадание и промах зависят от страницы: например. страница входа в систему работает без токена, но страница обновления пользователя не работает.
Я пытался придумать собственную стратегию (предложенную Mar c Gauthier ) для protect_from_forgery
что-то вроде:
protect_from_forgery with: :MyStrategy
class MyStrategy
byebug
def initialize(controller)
@contriller = controller
end
def handle_unverified_request
puts "HELLO!"
Rails.logger.warn [
"handle_unverified_request",
"#{@controller.controller_name}-#{@controller.action_name}"
].join(" - ")
end
end
Похоже, это ничего не дало при запуске приложения, вызов byebug
приостановится, но я никогда не получаю сообщение puts
или журнал ошибок.
Я также попробовал обычные стратегии, такие как with: :exception
, но ничего не меняется, некоторые страницы работают, а некоторые нет, но они согласуются.