안녕하세요. 이사작전.com의 개발자 플랫폼공작소입니다.
오늘은 lucy xss filter를 프로젝트에 쉽게 반영하는 방법에 대해서 포스팅을 하려합니다.
서론 없이 바로 시작하겠습니다.
[1번째 클릭!]
pom.xml파일의 dependencies에 아래의 값을 입력합니다.
| <dependencies> ... <dependency> <groupId>com.navercorp.lucy</groupId> <artifactId>lucy-xss-servlet</artifactId> <version>2.0.0</version> </dependency> </dependencies> | cs |
[2번째 클릭!]
아래의 파일을 다운로드하겠습니다.
lucy-xss-servlet-filter-rule.xml
src/main/resources의 위치에, lucy-xss-servlet-filter-rule.xml파일을 붙여넣습니다.
(프로젝트에 반영하기 전, 별첨 4-1의 내용을 꼭 확인해주세요.)
[부연 설명]
lucy-xss-servlet-filter-rule.xml 파일명을 바꾸면 안 될 것 같습니다.
XssEscapeFilterConfig.class에서 DEFAULT_FILTER_RULE_FILENAME 변수(그림 4-1의 검은색 테두리 박스)에 해당 파일명이 작성되어 있기 때문입니다. 파일명을 바꾸고 싶다면 해당 부분(그림 4-1의 검은색 테두리 박스)을 수정하면 됩니다.
[3번째 클릭!]
마지막으로 아래와 같이 web.xml을 수정하겠습니다.
| <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> ... <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> </web-app> | cs |
<web-app>에서 필터를 입력하는 부분에 해당 코드를 입력하면 됩니다. /*로 입력이 되어있으니 모든 URL패턴은 xss필터를 거치게 됩니다. 필터를 거치는 URL패턴을 변경하고 싶다면 /*부분을 수정하면 되겠습니다. 이것으로 기본적인 xss-filter설정이 종료되었습니다. 감사합니다.
[기능 동작 확인]
정상적으로 XSS방지가 적용된 것이 확인되었습니다.
도움이 되었다면 하단에 '공감' 버튼 한 번씩 눌러주세요.
혹시 제가 잘못 작성한 부분이 있다면 알려주세요. 수정하겠습니다.
추가로 궁금한 점이나 잘 적용이 안되는 부분이 있으면, 댓글 남겨주세요. 감사합니다.
*별첨: 4-1
lucy-xss-servlet-filter-rule.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?xml version="1.0" encoding="UTF-8"?> <config xmlns="http://www.navercorp.com/lucy-xss-servlet"> <defenders> <!-- XssPreventer 등록 --> <defender> <name>xssPreventerDefender</name> <class>com.navercorp.lucy.security.xss.servletfilter.defender.XssPreventerDefender</class> </defender> </defenders> <!-- default defender 선언, 별다른 defender 선언이 없으면 default defender를 사용해 필터링 한다. --> <default> <defender>xssPreventerDefender</defender> </default> <!-- url 별 필터링 룰 선언 --> <url-rule-set> <!-- url disable이 true이면 지정한 url 내의 모든 파라메터는 필터링 되지 않는다. --> <url-rule> <url disable="true">/</url> </url-rule> <!-- <url-rule> <url disable="true">/app</url> </url-rule> --> <!-- 설정된 param은 필터링에서 제외된다. --> <url-rule> <url>/app/admin</url> <params> <param name="title" useDefender="false" /> </params> </url-rule> </url-rule-set> </config> | cs |