2012-03-15 5 views
10

Intento enviar solicitud como http://site.com/abc%2Fabc y no funciona (envía el estado 400). Cómo entiendo que tomcat no acepta separadores de rutas codificadas por razones de seguridad, pero no sé cómo habilitar esta codificación. (He encontrado solo la opción AllowEncodedSlashes para apache http server). ¿Me puedes ayudar?Codificando barras diagonales hacia delante y hacia atrás en tomcat 7?

ACTUALIZACIÓN

me fijo este problema al utilizar la pequeña corte - antes de hacer que reemplazar todos los caracteres '/' en '|' y después de invertir estos caracteres en '/'

+1

Tuve el mismo problema pero no pude encontrar esta pregunta en SO porque no me di cuenta de que el problema estaba relacionado con la barra diagonal codificada. Vi un error de estado de 400 con Tomcat 7 con una respuesta de cuerpo vacío/sin respuesta, así que eso fue lo que busqué en google. Espero que agregar este comentario con palabras clave pueda ayudar a las personas con el mismo problema a encontrar esta pregunta :) – magnum87

Respuesta

17

Hay una opción Tomcat para permitir separadores de ruta codificados.

Conjunto del CATALINA_OPTS env var a

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

Esto permitirá que las barras codificadas.

+4

Solo una nota, esta característica está deshabilitada de forma predeterminada porque es un riesgo de seguridad: consulte http://www.tomcatexpert.com/blog/2011/11/02/best-practices-securing-apache-tomcat-7 y http : //en.wikipedia.org/wiki/Directory_traversal_attack – mlathe

+2

Tenga en cuenta que para corregir barras diagonales necesita org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH. Tal vergüenza Tomcat decide romper HTTP, en lugar de corregir el problema de seguridad subyacente (% 2F y% 5C son perfectamente válidos en las URL) –

+1

tenga en cuenta también que Tomcat convertirá la barra diagonal codificada en una ruta en una barra inclinada –

0

¿Has intentado poner URIEncoding="UTF-8" en tu <Connector en el server.xml?

+2

Sí. Puse URIEncoding = "UTF-8" en server.xml. No es solo trabajo con% 2F ... por ejemplo% 3A - ":" trabajo. – pushistic

5

También podemos añadir esta entrada "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true" en catalina.properties para permitir barra codificada en URL.


Y para permitir la barra diagonal inversa tiene que establecer diferentes propiedades. Refer this url para una configuración diferente.

Cuestiones relacionadas