如何从Nginx/Passenger中删除"X-Runtime"标头?

8 security ruby-on-rails passenger nginx http-headers

编辑 - 我在下面发布的解决方案可能适用于任何服务器(Nginx/Apache /其他任何东西),因为这个标头是在Rails本身设置的.


任何人都知道在Nginx和Passenger中可以删除"X-Runtime"标头的位置?

我已经找到了源文件并且还没有找到任何东西,但是我想摆脱它的安全性,因为它是Rails的标志.

小智 7

原来它没有在Nginx或Passenger中设置.

它位于/gems/actionpack-2.3.2/lib/action_controller/,第90行的benchmarkinging.rb中.


rad*_*rek 5

我知道这是一个古老的问题,但因为问题仍然存在,许多网站仍然暴露它的乘客和nginx版本我给出的答案对我来说非常好.相同的解决方案适用于X-Runtime标头.

只需安装第三方ngx_headers_more:http://github.com/agentzh/headers-more-nginx-module (您必须从源代码重建它).添加到您的配置(我为它创建了/etc/nginx/conf.d/security.conf):server_tokens off; more_clear_headers'服务器''X-Powered-By''X-Runtime';


pet*_*cai 5

对于仍然对此绊脚石的任何人,我相信最简单,最正确的方法是在config / application.rb中添加以下内容:

config.middleware.delete(Rack::Runtime)
Run Code Online (Sandbox Code Playgroud)

所有其他方法似乎并没有那么多地禁用标头,而是从输出中过滤它。这是用于rails4的,不确定是否适用于其他版本。

更新:

初始化文件中的以下代码可能更健壮,因为其他一些组件可能会假定Rack :: Runtime中间件的存在。

Rails.application.config.middleware.delete(Rack::Runtime)
Run Code Online (Sandbox Code Playgroud)