Languages/java

[Dependency]lucy filter xss 공격기법막기

뱅타 2021. 4. 20. 20:31

https://owasp.org/?gclid=Cj0KCQjw1PSDBhDbARIsAPeTqreK3Y1pkailZh8foGitGTrW_aC4KWG1aAhgea-ZvmZnMK0pNlihqsgaAgoCEALw_wcB

개발자가 반드시 막아야할 10가지 공격들 중

7. CROSS-SITE SCRIPTING을 막기 위해 lucy filter를 사용해 보자

받는 태그들을 이스케이프 시키면 된다.

https://www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=6&mode=view&p_No=259&b_No=259&d_No=88&ST=T&SV=

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을 상속받고 있다. 이 파일도 함께 받자.

상속받으니까 두개 다 받아준다.

이렇게 넣어 준 후 페이지를 작성한 후 보면 이렇게 <가 &lt;로 바껴서 출력되는것을 알 수 있다.

728x90
반응형