2012-03-15 1 views
10

Provo a inviare una richiesta come http://site.com/abc%2Fabc e non funziona (stato di invio 400). Come capisco che tomcat non accetta i separatori di percorso codificati per motivi di sicurezza, ma non so come abilitare questa codifica. (Ho trovato solo l'opzione AllowEncodedSlashes per il server http di apache). Mi potete aiutare?Codifica le barre in avanti e indietro in tomcat 7?

UPDATE

ho risolto questo problema usando piccolo mod - prima di rendere sostituire tutti i '/' caratteri '|' e dopo invertire i caratteri su '/'

+1

Ho avuto lo stesso problema ma non ho trovato questa domanda su SO perché non mi ero reso conto che il problema era correlato alla barra codificata. Ho visto un errore di stato 400 con Tomcat 7 con una risposta corpo vuoto/senza risposta, quindi è stato quello che ho cercato in google. Spero che aggiungere questo commento con le parole chiave possa aiutare le persone con lo stesso problema a trovare questa domanda :) – magnum87

risposta

17

C'è un'opzione Tomcat per consentire separatori di percorso codificati.

Impostare il CATALINA_OPTS env var a

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true 

Questo permetterà barre codificati.

+4

Solo una nota, questa funzione è disabilitata di default perché è un rischio per la sicurezza: vedi http://www.tomcatexpert.com/blog/2011/11/02/best-practices-securing-apache-tomcat-7 e http : //en.wikipedia.org/wiki/Directory_traversal_attack – mlathe

+2

Nota che per correggere le barre in avanti è necessario org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH. Una tale vergogna decide di interrompere HTTP, piuttosto che risolvere il problema di sicurezza sottostante (% 2F e% 5C sono perfettamente validi negli URL) –

+1

nota anche che Tomcat convertirà il backslash codificato in un percorso in una barra diretta –

0

Hai provato a inserire URIEncoding="UTF-8" nel tuo <Connector nello server.xml?

+2

Sì. Ho messo URIEncoding = "UTF-8" in server.xml. Non funziona solo con% 2F .. ad esempio% 3A - ":" lavoro. – pushistic

5

Possiamo anche aggiungere questa voce "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true" in catalina.properties per permettere barra codificata in URL.


E per consentire il backslash è necessario impostare proprietà diverse. Refer this url per configurazione diversa.