xss lucy naver
Servlet 환경에서 Lucy XSS Filter로 XSS 방어 설정
웹 애플리케이션을 운영할 때 XSS(크로스 사이트 스크립트) 공격을 방어하는 일은 필수입니다.
이 글에서는 네이버가 제공하는 Lucy XSS Filter를 Servlet 기반 애플리케이션에 적용해 입력값 기반 스크립트 삽입을 차단하는 방법을 단계별로 설명합니다. 또한 실제 적용 시 고려할 점과 예외 처리 방식을 함께 다룹니다. xss lucy naver
1. Maven 의존성 추가 (pom.xml)
Lucy XSS Filter를 사용하려면 프로젝트의 pom.xml에 의존성을 선언해야 합니다. 아래 의존성을 추가하면 서블릿 필터 형태로 라이브러리를 로드할 수 있습니다.
<dependency>
<groupId>com.navercorp.lucy</groupId>
<artifactId>lucy-xss-servlet</artifactId>
<version>2.0.0</version>
</dependency>
2. 웹 필터 설정 (web.xml)
모든 요청에 대해 필터를 적용하면 클라이언트 입력값을 중앙에서 통제할 수 있습니다. 서블릿 필터로 등록하면 URL 패턴에 맞는 요청을 자동으로 검사합니다.
<!-- XSS filter -->
<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>
3. 필터 규칙 설정 (lucy-xss-servlet-filter-rule.xml)
Lucy는 XML 기반 규칙을 통해 방어자(defender)와 예외를 세밀하게 정의할 수 있습니다. 서비스별로 문자열 처리 방식이나 파라미터별 예외를 분리해 관리하면 안전성과 유연성 모두를 확보할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://www.navercorp.com/lucy-xss-servlet">
<!-- Defender 정의 -->
<defenders>
<defender>
<name>xssPreventerDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssPreventerDefender</class>
</defender>
<defender>
<name>xssSaxFilterDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssSaxFilterDefender</class>
<init-param>
<param-value>lucy-xss-sax.xml</param-value>
<param-value>false</param-value>
</init-param>
</defender>
<defender>
<name>xssFilterDefender</name>
<class>com.navercorp.lucy.security.xss.servletfilter.defender.XssFilterDefender</class>
<init-param>
<param-value>lucy-xss.xml</param-value>
<param-value>false</param-value>
</init-param>
</defender>
</defenders>
<default>
<defender>xssPreventerDefender</defender>
</default>
<global>
<params>
<param name="globalParameter" useDefender="false"/>
<param name="globalPrefixParameter" usePrefix="true" useDefender="false"/>
</params>
</global>
<url-rule-set>
<url-rule>
<url disable="true">/disableUrl1.do</url>
</url-rule>
<url-rule>
<url>/url1.do</url>
<params>
<param name="url1Parameter" useDefender="false"/>
<param name="url1PrefixParameter" usePrefix="true" useDefender="false"/>
</params>
</url-rule>
<url-rule>
<url>/url2.do</url>
<params>
<param name="url2Parameter1" useDefender="false"/>
<param name="url2Parameter2" useDefender="xssSaxFilterDefender"/>
</params>
</url-rule>
</url-rule-set>
</config>
4. 적용 후 효과
- 모든 사용자 입력값에 대해 필터가 적용되어 스크립트 삽입을 차단합니다.
- URL·파라미터 단위로 예외를 설정할 수 있어 실제 서비스 흐름을 해치지 않습니다.
- 불필요한 검사나 코멘트 처리를 비활성화하면 성능 영향이 적습니다.
마무리
Lucy XSS Filter는 서블릿 기반 시스템에서 실무적으로 도입하기 쉬운 방어 수단입니다. 규칙 파일을 통해 방어자 조합과 예외를 정교하게 설계하면 보안과 운영 편의성 사이에서 균형을 맞출 수 있습니다. 도입 시에는 테스트 케이스를 넉넉히 만들어 예상치 못한 입력 처리 차이를 확인하세요. xss lucy naver
함께 보면 좋은 엔터프라이즈 사례
🚀 이 주제, 우리 서비스에 어떻게 적용할까요?
xss lucy naver를 실제 서비스와 조직에 녹여보고 싶다면, 현재 아키텍처와 운영 방식을 한 번 점검해 보는 것부터 시작해 보세요. 팀 위키나 기술 블로그, 사내 스터디 주제로도 아주 좋습니다.
이 글이 도움이 됐다면, 비슷한 엔터프라이즈 사례 글들도 함께 살펴보면서 우리 조직에 맞는 운영 상용구를 정의해 보세요.
댓글
댓글 쓰기