새소식

Framework/🍃 Spring

[Lucy XSS filter] 3번 클릭 만에 적용하기! - XSS방지, 방어, 네이버XSS

  • -
728x90

안녕하세요. 이사작전.com의 개발자 플랫폼공작소입니다.

오늘은 lucy xss filter를 프로젝트에 쉽게 반영하는 방법에 대해서 포스팅을 하려합니다.

서론 없이 바로 시작하겠습니다.


[1번째 클릭!] 

pom.xml파일의 dependencies에 아래의 값을 입력합니다.

1
2
3
4
5
6
7
8
<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을 수정하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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


반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.