관리 메뉴

이사작전.com IT Blog

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

Framework/Spring Framework

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

말랑고양 플랫폼공작소 2017. 11. 17. 11:03

안녕하세요. 이사작전.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


10 Comments
  • 프로필사진 냠냠 2018.05.11 13:45 lucy 적용법좀 질문드려도 될까요?
  • 프로필사진 Favicon of https://doctorson0309.tistory.com BlogIcon 말랑고양 플랫폼공작소 2018.05.14 02:11 신고 네네 ^ ^
  • 프로필사진 냠냠 2018.05.15 22:36 저 3개만 적용하면 되는건가요? 전 제 연습용 프로젝트에 적용시켜봤는데 적용된거 같지가 않아서.....

    preventer 는 잘 적용되는데 따로 이놈만 하는건

    근데 filter는 ..ㅠㅠㅠ

    서블릿필터가 보완되서 나온 라이브러리니까 서블릿필터만 적용 시키면 되는거죠??

    그리고 깃허브에 서블릿필터 사용법엔 web.xml 적용전에

    lucy-xss-filter 설정 도 하라고 되있던데 초보자라

    정확히 무엇 무엇을 손대야하고.... preventer 같이 컨트롤러단에 인스턴스를 생성하고 적용 어떻게 해야하는지 자세한 설명좀

    부탁드려요 ㅠㅠ
  • 프로필사진 Favicon of https://doctorson0309.tistory.com BlogIcon 말랑고양 플랫폼공작소 2018.05.16 00:47 신고 아, 혹시 lucy-xss-servlet-filter-rule.xml에서 27번 <url>/app/admin</url> 수정하셨나요?
  • 프로필사진 Favicon of https://doctorson0309.tistory.com BlogIcon 말랑고양 플랫폼공작소 2018.05.16 00:47 신고 XssEscapeFilterConfig.class에서 DEFAULT_FILTER_RULE_FILENAME의 변수가 lucy-xss-servlet-filter-rule.xml를 정상적으로 읽을 수 있도록 파일위치를 잘 맞춰주는게 중요합니다. 그 외에는.. 특이사항이 없었던걸로 기억합니다. 연습용 프로젝트에 게시판 기능이 있다면, <script> alert(1) </script> 이런 코드를 등록해보세요. 페이지에서 alert가 뜨면 적용에 실패한 것이고 <script> alert(1) </script>가 게시판 글에 그대로 나오면 적용에 성공한 것입니다. 혹시 에러 코드가 있다면 올려주세요 ^ ^

    https://m.blog.naver.com/lovej804/220627822392 여기 포스팅도 한 번 읽어보세요 ^ ^
  • 프로필사진 XssEscapeFilterConfig 2018.06.22 18:45 XssEscapeFilterConfig 클래스 파일이 없는데 이건 프로젝트 생성하실떄 기본적으로 있으셨던건가요?ㅜㅜ
  • 프로필사진 Favicon of https://doctorson0309.tistory.com BlogIcon 말랑고양 플랫폼공작소 2018.06.24 09:17 신고 포스팅 본문에 '1번째 클릭!' 의 부분, pom.xml파일의 dependencies에 lucy-xss-servlet를 추가해주었습니다. 그러면 lucy-xss-servlet-2.0.0.jar가 자동으로 다운로드 되고, 그 파일 안에 질문주신 XssEscapeFilterConfig 클래스 파일을 확인하실 수 있습니다. mvnrepository에서도 직접 다운로드 받으실 수 있습니다 ^ ^ 링크 남겨드립니다. https://mvnrepository.com/artifact/com.navercorp.lucy/lucy-xss-servlet/2.0.0
  • 프로필사진 XssEscapeFilterConfig 2018.06.28 15:53 감사합니당!!
  • 프로필사진 궁금해요 2019.12.20 10:17 안녕하세요^^
    일단 감사드려요

    1. Pom.xml 이 어디에 있는 걸까요??
    org.eclipse. 안에 너무 많아요 ㅠㅠ 아무거나 하나 수정하면 된요??

    2. Src 안에 리소스가 없어요 ㅠ 어디에 넣어야 할지 모르겠어요

  • 프로필사진 Favicon of https://doctorson0309.tistory.com BlogIcon 말랑고양 플랫폼공작소 2019.12.21 10:31 신고 안녕하세요~ 두가지 질문 모두 아래의 URL에서 해결이 가능할 것으로 보이네요.

    https://unabated.tistory.com/entry/Maven-을-이용한-프로젝트-생성-및-활용

    프로젝트에 pom.xml이 존재한다면, 이클립스 단축키인 Ctrl + Shift + R(파일명 검색)을 누르고 pom.xml을 검색하면 찾을 수 있습니다.
댓글쓰기 폼