2012-03-15 3 views
10

http://site.com/abc%2Fabc과 같은 보내기 요청을 시도했지만 작동하지 않습니다 (상태 400 보내기). Tomcat이 보안상의 이유로 인코딩 된 경로 분리자를 허용하지 않는다는 것을 어떻게 이해하지만이 코딩을 활성화하는 방법을 모르겠습니다. (나는 아파치 http 서버에 대해서만 AllowEncodedSlashes 옵션을 발견했다.) 나 좀 도와 줄 수있어? '|'이전의 모든 '/'문자를 대체 렌더링 -tomcat 7에서 앞뒤 슬래핑 코딩이 필요합니까?

UPDATE

나는 작은 해킹을 사용하여이 문제를 해결 반전 된 후 '/'에있는이 문자가

+1

동일한 문제가 있었지만 문제가 인코딩 된 슬래시와 관련되어 있다는 것을 알지 못했기 때문에이 질문을 찾을 수 없습니다. 나는 빈 몸체 반응/응답이없는 Tomcat 7의 400 상태 오류를 보았 기 때문에 그것이 내가 Google에서 찾은 것입니다. 키워드와 함께이 덧글을 추가하면 같은 문제가있는 사람들을 도울 수 있습니다. :) – magnum87

답변

17

인코딩 된 경로 구분 기호를 허용하는 Tomcat 옵션이 있습니다.

설정이 인코딩 슬래시 수

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

에 CATALINA_OPTS의 ENV var에.

+4

참고로이 기능은 보안 상 위험 할 수 있으므로 기본적으로 사용하지 않도록 설정되어 있습니다. http://www.tomcatexpert.com/blog/2011/11/02/best-practices-securing-apache-tomcat-7 및 http를 참조하십시오. : //en.wikipedia.org/wiki/Directory_traversal_attack – mlathe

+2

슬래시를 수정하려면 org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH가 필요합니다. 그런 부끄러운 바람둥이는 기본 보안 문제 (% 2F 및 % 5C는 URL에서 완벽하게 유효 함)를 고치는 대신 HTTP를 깨기로 결정합니다. –

+1

Tomcat이 경로의 인코딩 된 백 슬래시를 슬래시로 변환합니다. –

0

URIEncoding="UTF-8"<Connectorserver.xml에 넣었습니까?

+2

예. server.xml에 URIEncoding = "UTF-8"을 넣습니다. % 2F에서만 작동하는 것은 아닙니다. 예를 들어 % 3A - ":"와 같이 작동합니다. – pushistic

5

우리는 또한 URL에서 인코딩 된 슬래시를 할 수 있도록 catalina.properties 에서 "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true"로이 항목 을 추가 할 수 있습니다.


그리고 백 슬래시를 허용하려면 다른 속성을 설정해야합니다. 다른 구성의 경우 Refer this url

관련 문제