본문 바로가기

Spring/Framework

[Spring] XSS(Cross-site scripting) 사이트 간 스크립팅 취약점 대응

XSS(Cross-site scripting)?

사이트 간 스크립팅, 크로스 사이트 스크립팅(Cross-site scripting)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로
웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다.
이름이 CSS가 아닌 이유는 웹 기술인 CSS와 헷갈릴 수 있어서다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다.

이 취약점은 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타난다.
이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다.

 

Lucy-Xss-Servlet-Filter를 활용한 대응

pom.xml 

<dependency>
	<groupId>com.navercorp.lucy</groupId>
	<artifactId>lucy-xss-servlet</artifactId>
	<version>2.0.0</version>
</dependency>

web.xml

<!-- xssEscapeServletFilter는 CharacterEncodingFilter 뒤에 위치해야 한다. -->
<filter>
	<filter-name>xssEscapeServletFilter</filter-name>
	<filter-class>com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>xssEscapeServletFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

/resource 폴더 내에 "lucy-xss-servlet-filter-rule.xml" 파일을 생성 (주의 : lucy-xss-servlet-filter-rule.xml 파일명 유지)

lucy-xss-servlet-filter-rule.xml 필터링 룰 작성 (메뉴얼 참고)

 

 

 

 

참고사이트
https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85
https://github.com/naver/lucy-xss-servlet-filter