jstl을 통한 xss 방어하기
jstl은 JSP Standard Tag Library의 약어로 jsp에서 자주 사용되는 태그를 커스텀하여
라이브러리로 정의한 코드의 집합을 말합니다.
jstl의 c:out 태그와 fn:escapeXml()함수를 이용하여 출력 값을 텍스트로 처리할 수 있습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
### <c: out> 적용하기
<%
String securecoding = "hello, boanit!";
request.setAttribute("securecoding", securecoding);
%>
escapeXml false
< c:out escapeXml="false" value="${securecoding}" />
escapeXml true
< c:out escapeXml="true" value="${securecoding}" />
default
< c:out value="${securecoding}" />
* escapeXml은 생략될 경우 default로 true가 설정됩니다.
### fn:escapeXml()함수 라이브러리 설치하기
먼저 jstl 사용을 위하여 http://tomcat.apache.org/taglibs/standard/ 에서 jstl 1.1 버전을 설치합니다.
설치 후 lib 디렉토리에서 jstl.jar, standard.jar 파일을 WEB-INF/lib 디렉토리로 복사합니다.
필터를 적용할 jsp파일에서 jstl function 사용을 위한 선언을 합니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
### fn:escapeXml() 적용하기
<%
String securecoding = "hello, boanit!";
request.setAttribute("securecoding", securecoding);
%>
With escapeXml() Function:
string-1 : ${fn:escapeXml(securecoding)}
Without escapeXml() Function:
string-2 : ${securecoding}