2013-07-04 2 views
5

У меня есть приложение Rails, которое размещается на Heroku.Отключенные методы HTTP на Heroku

Для проверки безопасности, разрешающего наше приложение, нам сказали отключить несколько HTTP-методов.

«Веб-сервер приложения должен быть настроен для отключения TRACE и других методов HTTP, если они не используются».

Возможно ли это с Heroku? Если нет, есть ли способ отключить эти методы на уровне приложения? Любые советы будут оценены.

Благодаря

+1

** Обновление: ** Heroku получил обратно ко мне сказать, что это не возможно, на там конце. Так что теперь вопрос об отказе уровня приложения. – Forrest

+0

Было ли это хорошо с Intuit или у вас есть серверы перемещения? –

ответ

12

На уровне приложения, вы можете добавить это в вашем файле application_controller.rb

before_filter :reject_methods 

    def reject_methods 
    if ['TRACE','PATCH'].include?(request.method) 
     #raise ActionController::RoutingError.new('Not Found') 
     raise ActionController::MethodNotAllowed.new('Method not allowed') #405 
     # or whatever you want to do (redirect, error message, ...) 
    end 
    end 

Или вы могли бы попробовать с https://github.com/jtrupiano/rack-rewrite (проверить произвольное перезапись) с чем-то вроде этого (не тестировался):

rewrite %r{(.*)}, lambda { |match, rack_env| 
    rack_env["REQUEST_METHOD"] == "TRACE" ? "405.html" : match[1] 
} 

Или вы могли бы использовать вас собственный промежуточное программное обеспечение, помещая это в файле ./lib:

module Rack 

class RejectMethods 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    status, headers, body = @app.call(env) 

    if env["REQUEST_METHOD"] == "TRACE" || env["REQUEST_METHOD"] == "PATCH" 
     body.close if body.respond_to? :close 
     [status, headers, []] 
    else 
     [status, headers, body] 
    end 
    end 
end 

end 

и назвать его в application.rb

config.autoload_paths += %W(#{config.root}/lib) 

config.middleware.use "RejectMethods" 
+0

3 отличных предложения. Спасибо. – Forrest

Смежные вопросы