Lucy-XSS Filter는 악의적인 XSS 코드의 위험으로부터 웹 애플리케이션을 보호하는 기능을 화이트리스트(white list) 설정 방식으로 구현한 네이버에서 제작 무표 배포하는 자바 기반의 필터 라이브러리 이다.
블랙리스트를 사용하는 기존 필터보다 안전하게 웹서비스를 제공할 수 있다.
입력 파라미터로 전달되는 데이터의 경우 XSS 코드를 포함하고 있는지 판단하기 어렵기 때문에 Lucy XSS Filter를 사용하여 필터링 하기 어렵다. Lucy-XSS Filter는 JSP 나 action 등 출력 부분을 담당하는 로직에서 사용할 것을 권장한다.
[STEP1] 먼저 Lucy-XSS Filter 라이브러리와 설정 파일을 다운로드한다.
http://dev.naver.com/projects/lucy-xss/download
lucy-xss-1.1.2.jar <-- /WEB-INF/lib/ 폴더에 복사한다.
lucy-xss-superset.xml <-- /src 폴더에 복사한다.
[STEP2] lucy-xss.xml 파일을 작성한다.
Filter 인스턴스를 생성할 때 설정파일명을 지정하지 않으면 디폴트로
lucy-xss.xml 파일을 읽어서 사용한다.
<config xmlns="http://www.nhncorp.com/lucy-xss"
extends="lucy-xss-superset.xml">
</config>
[STEP3] write-url.xml 파일을 생성한다.
이 파일이 없거나, 이 파일에 기술되지 않은 모든 리소스는 필터대상이 된다.
[STEP4] 출력을 담당하는 소스부분에서 Filter를 적용해 본다.
/WebContent/labs/xss_test.jsp 파일수정
<%@ page import="com.nhncorp.lucy.security.xss.*" %>
String data=request.getParameter("data");
System.out.println("data: "+data);
XssFilter filter = XssFilter.getInstance("lucy-xss-superset.xml");
String clean=filter.doFilter(data);
System.out.println(clean);
out.println(clean);
[STEP5] 입력화면에서 다음과 같은 문자열을 입력해서 필터링이 되는지 확인해 본다.
http://192.168.x.x./openeg/labs/test.jsp 페이지 요청
<script>alert("XSS");</script>
<sscriptcript>alert("XSS");</sscriptcript>
<embed autostart="true"></embed>
<h1>hello</hello>
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩실습] BT5R3 네트워크 설정 (0) | 2014.04.29 |
---|---|
안행부 47개 보안 약점 항목 (0) | 2014.04.24 |
[시큐어코딩실습] 실습환경설정 (0) | 2014.04.19 |
[시큐어코딩실습] Acunetix 을 이용한 동적 분석 실습 (0) | 2014.04.14 |
[시큐어코딩실습] 파수닷컴 Sparrow를 이용한 정적 분석 실습 (0) | 2014.04.14 |