개발자가 반드시 막아야할 10가지 공격들 중
7. CROSS-SITE SCRIPTING을 막기 위해 lucy filter를 사용해 보자
받는 태그들을 이스케이프 시키면 된다.
kisa의 소프트웨어 개발 보안 가이드에 잘 설명되어 있다.
66p
69p
크로스 사이트 스크립팅을 막기 위해 사용 가능한 라이브러리들이 각 개발환경에 따라 정리되어 있다.
이 중에서 java 의 jucy filter를 사용해 보자.
구글에서 검색하면 github 사이트가 나온다.
사이트에 접속해서 README.md를 읽다 보면 하단에 dependency가 존재한다.
https://github.com/naver/lucy-xss-servlet-filter
<dependency>
<groupId>com.navercorp.lucy</groupId>
<artifactId>lucy-xss-servlet</artifactId>
<version>2.0.0</version>
</dependency>
** 관행적으로 SCOPE 가 TEST인 녀석은 맨 아래로 내린다.
pom.xml에 붙여넣기.
lucy-xss가 어떻게 작동하는지 간략하게 볼 수 있음. commons-lang3을 사용해서 스크립트들을 이스케이프시킨다는 것을 알 수 있다.
시작하기
이렇게 filter를 어느 순서로 놓아야할 지 잘 보아야한다.
지금 CharacterEncoding과 fileUpload 필더가 존재한다.
fileUpload 뒤에 놓게 된다면 현재 구성하고 있는 Resolver들을 바꾸어야하기 때문에(rapping 후 multipart로 받게 되어있다.) encoding과 fileUpload 사이에 필터를 위치시켜준다.
그 후 lucy-xss-servlet-filter-rule.xml 링크를 타고 들어간다.
우측의 Raw를 클릭
우클릭 후 다른 이름으로 저장
src/main/resources에 넣어 준다.
보면 총 3가지 방식이 있다.
밑의 두개를 보면 sax와 dom 방식으로 구동한다고 되어 잇다.
sax parsing - 읽고 파싱 읽고 파싱
dom - 다 읽고 model 만들고 selector를 이용해서 찾는다.
dom - 단점 - 만약 사이즈가 크다면 부하가 많이 걸리기도 한다.
dom을 사용해 보자. 위쪽에 기본 defender 방식을 설정해 주는 것이 있다.
그 후 이렇게 세팅.
lucy-xss-filter 설정하기
링크를 타고 들어가면 korean guide가 존재한다. korean guide를 살펴보자.
conf파일에서
lucy-xss.xml을 받자.
false 가 허용. true가 이스케이프를 시킴.
상단에 보면 lucy-xss-superset.xml을 상속받고 있다. 이 파일도 함께 받자.
상속받으니까 두개 다 받아준다.
이렇게 넣어 준 후 페이지를 작성한 후 보면 이렇게 <가 <로 바껴서 출력되는것을 알 수 있다.
Uploaded by Notion2Tistory v1.1.0