HTMLTagFilter 와 c:out 관계
- 작성자 :
- 김*철
- 작성일 :
- 2022-02-08 16:27:52
- 조회수 :
- 2,349
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요
진행중인 프로젝트에서 HTMLTagFilter 과 c:out 을 함께 쓰고 있습니다.
소스코드 보안검사에서 escapeXml="false" 때문에 지적 당했습니다.
해당 부분은 ckEditor를 사용하는 부분입니다.
<c:out value="${contents}" escapeXml="false"/>
여기서 escapeXml 을 없애니 > " 등과 같이 HTMLTagFilter 때문에 변환된 문자가 그대로 나오고 있습니다.
${contents}
c:out 을 없애고 EL 만 적용하니 태그가 적용되어 올바르게 나옵니다.
몇몇 검색해보니 c:out을 사용할 수 없을 때 HTMLTagFilter 를 사용한다고 봤습니다.
HTMLTagFilter 는 저장할때 변환, c:out 은 보여줄때 변환이라고 이해했는데
그렇다면 HTMLTagFilter 를 사용하여 DB에 저장했다면 c:out을 사용하지 않아도 시큐어코딩을 적용했다고 볼수 있는지 궁금합니다.
또는 <c:out value="${contents}" escapeXml="false"/> 를 사용했지만 HTMLTagFilter 를 적용해서 DB에 저장하고 있으니 예외처리 해달라고 말할 수 있을지 궁금합니다.
HTMLTagFilter.java 에 예외 uri를 적용해봤는데 이미 변환되어 저장된 내용에 대해서는 escapeXml="true" 로 해도 태그가 안먹히더군요.
감사합니다.
진행중인 프로젝트에서 HTMLTagFilter 과 c:out 을 함께 쓰고 있습니다.
소스코드 보안검사에서 escapeXml="false" 때문에 지적 당했습니다.
해당 부분은 ckEditor를 사용하는 부분입니다.
<c:out value="${contents}" escapeXml="false"/>
여기서 escapeXml 을 없애니 > " 등과 같이 HTMLTagFilter 때문에 변환된 문자가 그대로 나오고 있습니다.
${contents}
c:out 을 없애고 EL 만 적용하니 태그가 적용되어 올바르게 나옵니다.
몇몇 검색해보니 c:out을 사용할 수 없을 때 HTMLTagFilter 를 사용한다고 봤습니다.
HTMLTagFilter 는 저장할때 변환, c:out 은 보여줄때 변환이라고 이해했는데
그렇다면 HTMLTagFilter 를 사용하여 DB에 저장했다면 c:out을 사용하지 않아도 시큐어코딩을 적용했다고 볼수 있는지 궁금합니다.
또는 <c:out value="${contents}" escapeXml="false"/> 를 사용했지만 HTMLTagFilter 를 적용해서 DB에 저장하고 있으니 예외처리 해달라고 말할 수 있을지 궁금합니다.
HTMLTagFilter.java 에 예외 uri를 적용해봤는데 이미 변환되어 저장된 내용에 대해서는 escapeXml="true" 로 해도 태그가 안먹히더군요.
감사합니다.
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터 입니다.
HTMLTagFilter는
Servlet Filter 레벨에서 구동되므로
브라우저에서 WAS로 요청할때 적용되게 됩니다.
<c:out>의 경우는 View단으로 출력시에 escape처리를 적용하게 됩니다.
2가지 모두 적용 되는 경우가 가장 이상적이고
XSS 방지 처리에 안전하다고 볼수 있습니다.
현재 구현하시는 부분은
특정 부분에 예외를 두는 경우로 보이며
구현시 다양한 케이스가 발생할수 있으므로
소스코드 보안검사를 진행 하는
기관이나 업체와 협의가 필요할것으로 보입니다.
감사합니다.
표준프레임워크센터 입니다.
HTMLTagFilter는
Servlet Filter 레벨에서 구동되므로
브라우저에서 WAS로 요청할때 적용되게 됩니다.
<c:out>의 경우는 View단으로 출력시에 escape처리를 적용하게 됩니다.
2가지 모두 적용 되는 경우가 가장 이상적이고
XSS 방지 처리에 안전하다고 볼수 있습니다.
현재 구현하시는 부분은
특정 부분에 예외를 두는 경우로 보이며
구현시 다양한 케이스가 발생할수 있으므로
소스코드 보안검사를 진행 하는
기관이나 업체와 협의가 필요할것으로 보입니다.
감사합니다.