[JSP] JSTL 사용시 xss 취약점 조치

Posted by 김성철

JSTL 사용시 XSS 취약점 조치

JSTL 로 값을 받아와서 바로 사용하는 경우

* 아래는 실제 코드임  
ex )  
<meta property="og:url" content="${baseURL}${requestScope['javax.servlet.forward.servlet_path']}?${pageContext.request.queryString}">  
  
${pageContext.request.queryString} 변수의 경우 JSTL에서 제공해 주는 변수로  
JSP파일 내에서 ${pageContext.request.queryString} 로 바로 사용이 가능함,  
다만 XSS취약점때문에 c:out을 사용하여서 출력해야 XSS 취약점이 막아짐  
  
* c:out 태그에는 escapeXml 옵션이 있어서 xss를 막아주며, 디폴트는 true로 되어있어서 따로 명시하지 않아도 됨  
<c:out escapeXml="true" value="${greeting}" />  
<c:out value="${greeting}" />  
  
* 다만 스크립트가 필요할 경우에는 아래와 같이 false 옵션을 주어서 출력하면 됨  
  
<c:out escapeXml="false" value="${greeting}" />  
  • 변경된 전체 소스

->

=================================================================================================================

  • 수정된 부분만 발췌

    ${pageContext.request.queryString}

->

=================================================================================================================