안녕하세요 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 코드를 그대로 해석해서 내보내주기 때문에 주의할 필요가 있습니다.
감사합니다.
'주니어 기초 코딩공부 > JSP 기초' 카테고리의 다른 글
[jsp] 회원 수정 삭제 등록 (0) | 2024.07.01 |
---|---|
[JSTL] 비교 연산할 때 소수점 없애기 formatNumber (0) | 2023.11.08 |
[JSP] ★게시판 만들기★ (0) | 2023.02.01 |
[JSP] 로그인 기능 구현 기초 설명 (0) | 2023.01.31 |
[JSP] 회원제 게시판 구현 (0) | 2023.01.31 |