2014-12-19 2 views
1

나는 로깅을 통해 일종의 딜레마에 빠져있다. 내 응용 프로그램에서로그 용 ESAPI : 로그 출력을 인코딩해야합니까?

LogLevel=INFO 
LogEncodingRequired=true 

, 내가 ESAPI.getLogger(MyClass.class).info(Logger.USABILITY, true, message)를 호출하는 경우, 그것은>이 < 중 하나가있는 경우 (인코딩 된 문자 메시지를 출력 할 것이다 : 나는 ESAPI.properties이 은 다음과 같은 로그에 대한 옵션을 설정 , &, ', "등)

로그를 출력하는 메시지는 이러한 문자를 가지며 위의 log.info 호출은 로그의 모양을 엉망으로 만듭니다 모든 인코딩 된 문자

질문 : LogEncodingRequired=false을 설정하면 (그대로 메시지를 출력 함) XSS에 취약한 로그 파일 (웹 브라우저에서 볼 수 있음)이 발생할 가능성이 있습니까?

답변

0

출력을 제대로 인코딩하지 않거나 웹 브라우저에서 원시 웹 로그를보고있는 웹 기반 도구를 사용하여 로그를보고있는 것처럼 들립니다. 이 값을 수정하면 사용자가 제공 한 데이터가 응용 프로그램에 입력 될 때 적절하게 유효성을 검사하지 않을 경우 XSS의 가능성이 높아져서이 로그에 기록됩니다. 이것은 또한 로그 주입으로 이어질 수 있습니다.