금융에 대한 모든 것

c:out 태그란?

 c:out 태그는 자바에서의 System.out.println 메서드, JSP 비슷한 역할을 가지고 있습니다. 어떤 값을 입력받던지 간에 콘솔이 아닌 화면에 문자열로 바꾸어서 보여주는 역할입니다. 얼핏 보면 그렇게 유용한 기능을 하는 태그는 아닌 것처럼 보이긴 하지만 사용해야 하는 상황이 있습니다. 먼저 c:out 태그의 사용법을 알아보고 c:out 태그를 사용하는 이유에 대해 알아보겠습니다.

 

c:out 태그 사용법

 

 필수적으로 입력해야 되는 value 속성으로, 화면에 출력할 값을 적습니다. 이때 어떤 값이든 간에 출력 값을 문자열로 바꾸어 출력합니다. escaperXml 속성은 설정을 해주지 않으면 기본적으로 true 값으로 설정됩니다. false 설정해 주었을 때는 default 속성은 value 값을 찾지 못했을 출력하는 값입니다.

 

예시

<c:out value="${value}"/>

 위와 같이 value 속성에는 el태그 형식으로 지정합니다.

 

c:out 태그를 사용하는 이유

 c:out 태그를 사용하지 않고 el태그만 써도 화면에 값이 출력이 되는데 굳이 c:out 태그를 사용하는 이유는 아래와 같습니다.

 

escapeXml = true 인 경우

<c:out value="<script type='text/javascript'>alert(1);</script>"/>

c:out은 기본적으로 값이 어떻든 무조건 문자열을 출력하므로 해당 문자 그대로 출력이 됩니다. 이때 escapeXml 속성은 true 상태입니다.

 

escapeXml = false 인 경우

<c:out value="<script type='text/javascript'>alert(1);</script>" escapeXml="false"/>

위와 같은 경우 문자열이 출력되지 않고 해당 스크립트가 실행되어 alert 경고창이 뜹니다. 이때 escapeXml 속성은 false 경우이고 el태그를 그대로 사용할  이런 상태가 됩니다

 

이런 상태는 보안에도 좋지 않고 오작동을  가능성이 있기 때문에 화면에 출력하는 값들은 모두 문자열로 바꾸어 주기 위해 c:out태그를 사용하는 것입니다.

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형