본문 바로가기

개발 공부/JSP

[JSP] <c:out>을 사용하는 이유

${}를 이용해도 되는데 굳이 c:out value를 이용하여 출력하는 이유는 보안성 때문이다.


XSS(Cross-site Scripting)공격은 웹 사이트에 스크립트 코드를 주입시키는 방법으로 웹 사이트 공격 방법 중 기초적인 것에 해당된다. 해결 방법은 html코드를 해석하지 않게 만들면 간단히 방어할 수 있다.

 

즉, XSS공격 방지를 위해 "<c:out>"을 사용하여 막을 수 있다.

 

<c:out>을 사용하는 이유

  1. 엄격한 태그 규칙을 위해 사용한다.
  2. 개행문자 파싱의 차이 때문에 사용한다.
  3. 보안성 때문에 사용한다.

 

아래와 같은 게시판 사이트가 있다고 가정해보면

 

 

게시판에 글을 등록할 때 다음과 같이 스크립트 코드를 집어 넣어본다.

 

 

 

결과는

 

 

 

자바스크립트 코드가 실행된 것을 볼 수 있다.

이러한 자바스크립트 코드를 실행을 막으려면

EL 밖에 <c:out value=' '/>태그를 씌워서

자바스크립트 태그가 실행되지 않게 만들고

글자 그대로 출력되게 하면 된다.

 

 

출처 https://2ham-s.tistory.com/274

 

용어 설명

  • 개행문자 - 인쇄 위치 또는 표시 위치를 다음의 행으로 옮기는 데 사용되는 문자.
  • 파싱(Parsing) - 언어학에서 parsing은 구문 분석이라고도 하며, 문장을 그것을 이루고 있는 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정하는 것이다. 컴퓨터 과학에서 parsing은 일련의 문자열을 의미있는 token(어휘 분석의 단위)으로 분해하고 그것들로 이루어진 Parse tree를 만드는 과정이다.
  • EL(Expression Language) - 자바 빈의 프로퍼티, 값을 JSP의 표현식 <%= %>이나 액션 태그 <jsp:useBean>를 사용 하는 것보다 쉽고 간결하게 꺼낼 수 있게 하는 기술이다.

'개발 공부 > JSP' 카테고리의 다른 글

[JSP] EL 표현식 문법과 사용방법  (0) 2021.07.16