2013-08-12 11 views
10

Dopo l'aggiornamento a php 5.5.1 e apache 2.4.6, il controllo di determinate intestazioni è ora interrotto (in particolare, verifica di HTTP_X_REQUESTED_WITH).Nome intestazione con caratteri di sottolineatura ignorati in php 5.5.1/apache 2.4.6

Attraverso ulteriori test ho notato che qualsiasi intestazione personalizzata che contiene un carattere di sottolineatura viene ignorata (con questo intendo che non viene visualizzata nell'array di PHP $_SERVER). Quindi, se aggiungo un'intestazione denominata my-header, diventa disponibile come $_SERVER['HTTP_MY_HEADER'], ma se provo ad aggiungere un'intestazione my_header, non è disponibile in $_SERVER.

+1

Dal momento che si sta utilizzando Apache, si ottiene l'intestazioni corrette quando si utilizza [ 'apache_request_headers'] (http://uk3.php.net/manual/en/function.apache-request-headers.php) – naththedeveloper

+1

@FDL sì, ottengo intestazioni corrette con apache_request_headers –

+3

Avrei dovuto fare la ricerca prima di postare ... Questa è una funzionalità documentata in apache 2.4: "La traduzione delle intestazioni alle variabili di ambiente è più severa di prima per mitigare alcune possibili attacchi di scripting del sito tramite header header. Le intestazioni contenenti caratteri non validi (inclusi i caratteri di sottolineatura) vengono ora eliminati automaticamente. " - https://httpd.apache.org/docs/trunk/new_features_2_4.html –

risposta

13

Questa è una funzionalità documentata in Apache 2.4. Vedere httpd.apache.org/docs/trunk/new_features_2_4.html

Traduzione di intestazioni alle variabili di ambiente è più rigoroso rispetto prima di mitigare alcuni possibili attacchi di cross-site-scripting tramite iniezione intestazione. Intestazioni contenenti caratteri non validi (inclusi i caratteri di sottolineatura ) vengono ora eliminati automaticamente.

+3

E come si aggira questa 'caratteristica'? –

+0

Basta sostituire _ con -: "custom_api_key" -> "custom-api-key" –

+1

Se (come me) sei bloccato con interfacce legacy che non possono essere modificate, la documentazione spiega una soluzione alternativa: http: // httpd.apache.org/docs/trunk/env.html#fixheader – MattMatt

Problemi correlati