2009-06-12 8 views
8

EDIT - la soluzione che ho postato di seguito probabilmente si applica a qualsiasi server (Nginx/Apache/qualsiasi altra cosa), perché questa intestazione è impostata su Rails stesso.Come rimuovere l'intestazione "X-Runtime" da Nginx/Passenger?


Qualcuno sa dove l'intestazione "X-Runtime" può essere rimosso in Nginx & passeggeri?

Ho scaricato i file di origine e non ho ancora trovato nulla, ma mi piacerebbe liberarmene per sicurezza dato che è un segno rivelatore di Rails.

+0

Sono abbastanza sicuro che X-Runtime non è impostato da nginx. Ti suggerisco di controllare le fonti dei passeggeri. –

+0

Ho preso entrambe le sorgenti prima di fare la domanda ma non ho visto nulla in nessuna delle due. – fig

risposta

7

venuto fuori che non era stato impostato in modalità a Nginx o Passeggeri.

E 'in benchmarking.rb in /gems/actionpack-2.3.2/lib/action_controller/, linea 90.

1

Quanto segue è per Apache. Non ho letto correttamente la domanda. :)

attivare il modulo intestazioni, mod_headers, e aggiungere il seguente alla configurazione di Apache

Header always unset "X-Runtime" 

Si avrà probabilmente anche voler rimuovere l'intestazione X-Powered-By quindi aggiungere il seguente troppo.

Header always unset "X-Powered-By" 
+0

Questo è in realtà Nginx piuttosto che Apache - grazie però :) – fig

+0

Ah, whoops! :) Colpa mia. – toholio

3

In Apache è possibile utilizzare mod_headers di cancellare qualunque colpo di testa dalla risposta (o la richiesta per quella importa).

Per rimuovere le intestazioni necessarie per abilitare il modulo:

# a2enmod headers 

quindi è possibile utilizzare l'opzione di disinserimento fo la direttiva intestazione di disinserire loro:

Header unset X-Runtime 
Header unset X-Powered-By 

Questa direttiva può essere utilizzata sia a livello globale e per il singolo server virtuale

5

So che è un po 'vecchia domanda ma perché il problema esiste ancora e molti siti espongono ancora è passeggero e nginx versione Io do una risposta che funziona molto bene per me. La stessa soluzione si applica all'intestazione X-Runtime.

Basta installare 3rd party ngx_headers_more: http://github.com/agentzh/headers-more-nginx-module (devi ricostruirlo dal sorgente). Aggiungi alla tua configurazione (ho creato /etc/nginx/conf.d/security.conf per questo): server_tokens off; more_clear_headers 'Server' 'X-Powered-By' 'X-Runtime';

3

Per chi è ancora inciampare su questo, credo che il modo più semplice e corretto per farlo è in config/application.rb, aggiungendo il seguente:

config.middleware.delete(Rack::Runtime) 

Tutti gli altri metodi sembrano non tanto disabilitare l'intestazione come filtro dall'output. Questo è per rails4, non so se si applica ad altre versioni.

Aggiornamento:

Il seguente codice in un file di inizializzazione può essere più robusta come l'esistenza di middleware Rack :: Runtime potrebbe essere assunta da alcuni altri componenti.

Rails.application.config.middleware.delete(Rack::Runtime) 
+0

Questo mi ha dato questo errore: '' 'Exiting /Users/ryan/.rvm/gems/[email protected]/gems/actionpack-4.1.5/lib/action_dispatch/middleware/stack.rb:125: in 'assert_index ': Nessun middleware da inserire prima:" Rack :: Runtime "(RuntimeError)' '' in Rails 4.1.5 – ethicalhack3r

+0

Forse c'è del codice che tenta di inserire qualcosa prima di Rack :: Runtime e si presuppone che sia nel elenco di middleware. Puoi provare questo invece in un file di inizializzazione, che dovrebbe aggirare il problema: 'Rails.application.config.middleware.delete (Rack :: Runtime)' – petercai

+0

Ha funzionato, grazie! :) – ethicalhack3r