본문 바로가기
IT_Developers/JAVA

JSTL - <c:out> 사용법과 특징

by 고코더 2021. 11. 12.

<c:out>을 사용하는 이유 

 

안녕하세요.

고코더 입니다.

 

 

JSP 페이지를 작성하면 친숙하게 사용하는 문법 중에 하나가 이 c:out입니다. 데이터를 출력하는 가장 기본적인 방법입니다. 무심코 쓰였던 이 문법에 사용법과 특징을 이번 시간에 다뤄보려고 합니다. 

 

사용법

 1. 사용법은 매우 간단합니다. value의 값을 입력하면 화면에 출력됩니다. 

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

 

2. 한 가지 옵션을 다뤄본다면 escaperXml 속성 있습니다. 해당 옵션을 설정하지 않으면 ture입니다. 이는 c:out 이 기존 el 태그와 다른 강점을 보이는 옵션입니다. 특수문자를 문자 엔티티 코드로 변환시키는 역할을 합니다. 즉 문자 그대로 노출하게 만들어 줍니다.

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

 

EL 태그 ${} 보다 c:out을 사용해야 하는 이유

앞서 배운 것처럼 보안성의 문제입니다. Cross-site Scripting 공격은 스크립트를 주입시켜서 사이트를 침입합니다. 그렇기 때문에 EL 태그보다 c:out 태그를 사용할 시에 좀 더 안전하게 페이지를 만들 수 있습니다.  

 

3. 만약에 해당 스크립트를 el 태그에 집어넣는다면 어떻게 될까요?

<script>alert('GoCoder');</script>

 

 4. 해당 스크립트를 el로 표현한다면

${"<script>alert('GoCoder');</script>"}

 

 5. 이렇게 스크립트가 노출됩니다. XSS 공격에 취약합니다. 

 

 6. 하지만 이 부분을 c:out으로 노출한다면 정상적으로 문자열로 노출이 됩니다.

<c:out value="${"<script>alert('GoCoder');</script>"}"/>

 

7. 이렇게 문자열 그대로 노출이 됩니다.

댓글