Skip to the content.

lucy-xss-filter

lucy-xss는 네이버에서 제공하는 XSS 방어를 위한 오픈 소스 라이브러리이며,

블랙리스트 방식이 아닌 화이트리스트 방식의 필터가 적용되어 보다 강력한 보안을 적용할 수 있습니다.

아래에선 lucy-xss-filter 설치 및 적용 방법을 다루겠습니다.

설치 하기

https://github.com/naver/lucy-xss-filter 에서 아래의 파일을 설치합니다.

설정 하기

lucy-xss-filter에는 아래와 같이 3가지 화이트 리스트 설정 파일이 있으며

사용 환경 및 서비스 특성에 맞는 설정 파일을 선택해서 사용할 수 있습니다.

  1. lucy-xss-default.xml은 jar파일에 포함되어 배포되는 lucy-xss Filter의 기본 설정 파일로 html element와 attribute가 선언되어있습니다.

  2. lucy-xss-superset.xml은 lucy-xss-default.xml을 상속받아 작성된 파일이며 최신 보안 설정이 추가되어 있습니다.

  3. lucy-xss.xml은 사용자가 작성하는 xml파일로 서비스 특성에 맞게 필터링을 적용할 수 있습니다.

사용 환경 특성에 맞는 화이트 리스트 파일을 선택하여 아래의 경로에 설치합니다.

lucy-xss-1.6.2.jar 파일은 /WEB-INF/lib 경로에 복사합니다.

화이트 리스트 설정 파일은 /src 경로에 복사합니다.

lucy-xss-superset.xml

<?xml version=”1.0” encoding=”UTF-8”?>

<attributeRule>
	<attribute name="data" base64Decoding="true">
		<notAllowedPattern><![CDATA[(?i:s\\*c\\*r\\*i\\*p\\*t)]]></notAllowedPattern>
		<notAllowedPattern><![CDATA[&[#\\%x]+[\da-fA-F][\da-fA-F]+]]></notAllowedPattern>
	</attribute>
	<attribute name="src" base64Decoding="true">
		<notAllowedPattern><![CDATA[(?i:s\\*c\\*r\\*i\\*p\\*t)]]></notAllowedPattern>
		<notAllowedPattern><![CDATA[&[#\\%x]+[\da-fA-F][\da-fA-F]+]]></notAllowedPattern>
	</attribute>
	<attribute name="style">
		<notAllowedPattern><![CDATA[(?i:e\\*x\\*p\\*r\\*e\\*s\\*s\\*i\\*o\\*n)]]></notAllowedPattern>
		<notAllowedPattern><![CDATA[&[#\\%x]+[\da-fA-F][\da-fA-F]+]]></notAllowedPattern>
	</attribute>
</attributeRule>

</config>

적용하기

출력 값이 생성되는 파일에 filter를 적용합니다.


import com.nhncorp.lucy.security.xss.XssFilter;

	String data=request.getParameter("data");
	out.println(data);
	XssFilter filter = XssFilter.getInstance("lucy-xss-superset.xml");
	String FilteredData filter.doFilter(data); 
	out.println(FilteredData);