编辑 -- 我下面发布的解决方案可能适用于任何服务器(Nginx / Apache / 任何其他服务器),因为这个头文件是在Rails本身中设置的。
有人知道在Nginx和Passenger中如何删除“X-Runtime”头文件吗?
我已经在源文件中使用了grep,但还没有找到任何东西,但由于它是Rails的一个明显标志,我想要摆脱它以保护安全。
编辑 -- 我下面发布的解决方案可能适用于任何服务器(Nginx / Apache / 任何其他服务器),因为这个头文件是在Rails本身中设置的。
有人知道在Nginx和Passenger中如何删除“X-Runtime”头文件吗?
我已经在源文件中使用了grep,但还没有找到任何东西,但由于它是Rails的一个明显标志,我想要摆脱它以保护安全。
对于仍然遇到问题的人,我认为最简单和最正确的方法是在config/application.rb中添加以下内容:
config.middleware.delete(Rack::Runtime)
所有其他方法似乎不是禁用标题,而是从输出中过滤标题。这适用于rails4,不确定是否适用于其他版本。
更新:
在初始化文件中添加以下代码可能更加健壮,因为一些其它组件可能会默认存在Rack::Runtime中间件。
Rails.application.config.middleware.delete(Rack::Runtime)
Exiting /Users/ryan/.rvm/gems/ruby-2.1.2@wpvulndb/gems/actionpack-4.1.5/lib/action_dispatch/middleware/stack.rb:125:in `assert_index': No such middleware to insert before: "Rack::Runtime" (RuntimeError)
- ethicalhack3rRails.application.config.middleware.delete(Rack::Runtime)
- petercai结果发现它既没有在Nginx中设置,也没有在Passenger中设置。
它位于/bundle/actionpack-2.3.2/lib/action_controller/benchmarking.rb中的第90行。
# a2enmod headers
Header unset X-Runtime
Header unset X-Powered-By
mod_headers
,并将以下内容添加到Apache的配置中。Header always unset "X-Runtime"
您可能还想要删除X-Powered-By
头部,因此也需要添加以下内容。
Header always unset "X-Powered-By"