JAVA
JSTL - replace 문자열 치환하기
Park.S.W
2019. 11. 5. 10:17
반응형
아주 오래전에 개발된 웹페이지를 맡게되어서 개발중인데, 취약점으로 엄청난 지적들이 나오고 있어서 고통을 받고 있다...
mybatis $문제도 문제지만 jsp에서 ${}로 데이터를 받은부분에서 XSS악성스크립트로 replace 문자열 치환을 해달라는 요청이 있어서 바꾸고 있는중인데 jstl에서 replcae사용법에 대해 알아보겠다.
먼저 fn 태그스크립트를 추가해준다.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
기존)
<c:forEach items="${list}" var="list" varStatus="i">
<tr>
<td>${list.no}</td>
</tr>
</c:forEach>
replace 처리)
<c:forEach items="${list}" var="list" varStatus="i">
<tr>
<td>${fn:replace(fn:replace(list.no, '<', ''), '>', '')}</td>
</tr>
</c:forEach>
td태그 사이의 값을 보면 된다.
먼저 "<" 특수문자를 공백으로 치환후 한번더 replace하면서 ">"로 변경처리 해준다.
${fn:replace(대상, '대상 문자열', '변경할 문자열')}
fomatter와 같은 태그로 묶어서 날짜표현을 하던 데이터의 경우
기존)
<fmt:formatDate var="sDt" pattern="yyyy-MM-dd" value="${list.startDate}" />
replace 처리)
<fmt:formatDate var="sDt" pattern="yyyy-MM-dd" value="${list.startDt}" />
${fn:replace(fn:replace(sDt, '<', ''), '>', '')}
var에 먼저 패턴에 따른 형변환을 처리한 후 변수값을 이용하여 replace를 해주면 적용이 가능하다.
반응형