Может ли `protect_from_forgery with::exception` вызывать сбой?

Я сталкиваюсь со сценарием, где есть плохие актеры, размещающие JSON на чувствительных (вышедших из строя) конечных точках в большом масштабе.

В дополнение к ограничению скорости по IP, я хотел бы добавить protect_from_forgery with: :exception как before_filter для приложения Rails.

Этот фильтр возвращает ответ 500 или фактически вызывает необработанное исключение, которое приводит к сбою процесса Rails? В местном масштабе это, кажется, последнее.

Меня беспокоит то, что неаутентифицированные боты будут эффективно DDOS обслуживать, многократно прерывая процессы.

1 ответ

Решение

Нет, все неперехваченные исключения в вашем приложении должны быть спасены Rails (или Rack) и зарегистрированы, с ошибкой 500, возвращаемой клиенту. Только segfault или другой критический сбой может привести к смерти процесса. И даже в таких случаях хороший веб-сервер (скажем, Puma) перезапустит процесс. Но если даже Puma умрет, ваша производственная среда должна иметь монитор процессов (god, monit и т. Д.), Который перезапустит веб-сервер, если он выйдет из строя или превысит границы памяти.

Мне любопытно, что вы подразумеваете под "локально, похоже, что он [завершает процесс Rails]". Ваша команда rails server на самом деле выход на исключение CRSF?

Другие вопросы по тегам