2022. 12. 19. 11:37ㆍJSP
day36 프로젝트 내 WebContent 내 WEB-INF 내 lib 내 jstl.jar 와 standard.jar 를 넣는다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL TEST(출력의 종류)</title>
</head>
<body>
<c:set var="name" value="홍길동"/>
${name}
<c:out value="${name }"/>
${"<script>alert('안녕');</script>"}
<c:out value="<script>alert('안녕');</script>"/>
<c:out value="<script>alert('안녕');</script>" escapeXml="false"/>
<br/>
<c:out value="<b>${name}</b>"/>
<br/>
<c:out value="<b>${name}</b>" escapeXml="false"/>
</body>
</html>
Tag가 jsp 화면에 그대로 노출될 경우와 그렇지 않은 경우에 escapeXml을 쓴다고 한다.
JSTL로 <c:out value="값" /> 처리를 할 때, 태그처리를 자동으로 해서 생기는 문제라 한다.
기본적으로는 escapeXml 이라는 값이 true로 처리된다고 하며, 이속성은 <.>와 같은 값들을
< > 등으로 바꾸어 화면에 뿌린다.
하지만, 태그를 사용해서 사용자가 의도한 태그의 기능그대로 예를 들면 <b></b>를 써서
글자를 굵게 보이게 하고 싶다던가 할때 원하는 대로 뿌려줘야 할 경우에는 escapeXml="false"
를 써주면 된다.
escapeXml을 설정하지 않거나 true로 설정할 경우,
출력 문자열에 포함된 HTML 특수 문자(예: <.>,&,' 또는 ")는 해당되는 문자 엔티티 코드로
변환되고, JSP 페이지에서 생성된 HTML 페이지에 그 문자가 고대로 적절히 표시된다고
합니다.
여기서 <script></script>태그를 <c:out value="값" /> 태그 내 값안에 넣었을 때는 escapeXml="false"로 기본 설정되는 듯하거나 먹히지 않는다고 본다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL TEST(출력의 종류)</title>
</head>
<body>
<c:set var="name" value="홍길동"/>
${name}
<c:out value="${name }"/>
${"<script>alert('안녕');</script>"}
<c:out value="<script>alert('안녕');</script>" escapeXml="true"/>
<c:out value="<script>alert('안녕');</script>" escapeXml="false"/>
<br/>
<c:out value="<b>${name}</b>"/>
<br/>
<c:out value="<b>${name}</b>" escapeXml="false"/>
</body>
</html>
<c:out value="값" /> 태그 내에 <script></script> 태그를 써서 escapeXml="true" 를 써도 스크립트의 alert문이 잘 작동하는 걸로 보아 스크립트태그가 안에 쓰여졌을 때는 무효화되거나 자동으로 escapeXml="false"가 되는 듯 하다..
'JSP' 카테고리의 다른 글
JSTL 제어문 - 반복문 (0) | 2022.12.19 |
---|---|
JSTL 제어문 - 조건식 (0) | 2022.12.19 |
JSTL (0) | 2022.12.19 |
iframe 과 navigator.geolocation.getCurrentPosition(성공, 오류, 옵션들); (0) | 2022.12.18 |
EL (0) | 2022.12.18 |