2010-11-09 2 views
1

У меня небольшое приложение на Rails 2.3.2, обслуживается с nginx + thin (127). OS FreeBSD 7.1, DB - Posgresql.Рельсы и ip-spoofing

Twise на этой неделе мое приложение упало. В журнале я получаю что-то вроде (~ 2-50 запроса в секунду):

/!\ FAILSAFE /!\ Mon Oct 04 20:13:55 +0300 2010 
Status: 500 Internal Server Error 
    bad content body 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb:311:in `parse_multipart' 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb:125:in `POST' 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:428:in `request_parameters' 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:381:in `parameters' 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1279:in `assign_shortcuts' 
    /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:518:in `process_without_filters' 

Или:!

/\ FAILSAFE/\ вт 9 ноября 9:24:39 +0200 2010 Статуса : 500 Внутренняя ошибка сервера Атака IP-спуфинга ?! HTTP_CLIENT_IP = "XX.XX.XX.XX" HTTP_X_FORWARDED_FOR = "192.168.XX.XX, YY.YY.YY.YY"

/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:229:in `remote_ip' 
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1372:in `request_origin' 
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1304:in `log_processing_for_request_id' 
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1296:in `log_processing' 
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:522:in `process_without_filters' 

После этого система лежит в максимальном пределе открытого файла (я предполагаю, что это открытые postgesql сессиями), postgresql не может установить новое соединение и приложение падать.

Любое предложение, как я могу защитить свой ss pp в этой ситуации?

ответ

6

Цитируется по рельсам 2.3 примечания к выпуску:

Тот факт, что Rails проверяет IP-спуфинг может быть помехой для сайтов, которые делают большой трафик с мобильных телефонов, так как их прокси вообще не установить вещи правильно. Если это вы, теперь вы можете установить ActionController :: Base.ip_spoofing_check = false, чтобы полностью отключить проверку.