주니어 기초 코딩공부/JSP 기초

JSP C태그_<c:out value="${값}"/>

jju_developer 2023. 8. 3. 16:41
728x90

안녕하세요 jju_developer입니다.

 

JSP 페이지를 작성 시 계속 보는 문법 중에 c 태그!

그중에서도 c:out에 대해 알아보겠습니다.

 

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

 

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

c:out 태그는 데이터를 출력하기위해 사용됩니다. 

escaperXml 속성은 설정을 해주지 않으면 기본적으로 true 값으로 설정됩니다. 

 

※ false로 설정해 주었을 때는 default 속성은 value 값을 찾지 못했을 때 출력하는 값입니다.

c:out 태그를 사용하지 않고 el태그만 써도 화면에 값이 잘 출력이 되는데 

 

꼭 c:out 태그를 사용해야할까요?

el태그를 사용하는 경우 문자열이 출력되지 않고 해당 스크립트가 실행되어 alert 경고창이 뜹니다. 
이때 escapeXml 속성은 false인 경우이고 el태그를 사용할 때 alert 경고창이 뜨는 것 입니다.

el태그로 출력을 하는것은 보안에도 좋지 않습니다.

아까 위에서 해당 태그로 사용할 경우 스크립트가 실행하면서 경고창이 뜬다고 했는데,

이 경우에는 XSS공격에 취약하게 됩니다.

※ XSS공격은 웹사이트에 스크립트 코드를 주입시키는 방법으로 

웹사이트 공격방법 중 기초적인 것에 해당됩니다.


즉, JSP view페이지를 만들 때 XSS공경 방지를 위해 " <c:out> "을 사용하여 막을 수 있습니다.


화면에 출력하는 값들은 모두 문자열로 바꾸어 주기 위해 c:out태그를 사용하는 것입니다.

자바스크립트 코드를 실행을 막으려면

EL 밖에 <c:out value=' '/>태그를 씌워서

자바스크립트 태그가 실행되지 않게 만들고

글자 그대로 출력되게 하면 글자 그대로 출력됩니다.

출력 문자열에 HTML 특수문자(예: <, >, &, ' 또는 ") 포함되어 있을 경우

HTML을 해석하지 않고 그대로 출력되도록 해줍니다.


BUT!!!

<c:out value=' ${값}' escapeXml = false />로 입력하면

HTML 코드를 그대로 해석해서 내보내주기 때문에 주의할 필요가 있습니다.

감사합니다.

728x90