본문 바로가기

끄적끄적

[끄적끄적] SpringBoot에서 가장쉽게 Xss filtering을 하는 방법

SpringBoot에서 가장쉽게 Xss filtering을 하는 방법

SpringBoot프레임워크 안에서 사용할 수 있는 Xss filtering 라이브러리를 소개합니다.
이 라이브러리를 사용하면, 어떠한 설정 없이도 다음과 같이 어노테이션 기반으로 Xss Filtering을 진행할 수 있습니다.

@RestController
public class Example{
  
    @XssFiltering
    @GetMapping("/example")
    public Object helloworld(@Xss String param1, 
    			@Xss("json") SomeObject param2, 
    			@Xss("string") String param3, String param4){

    }
  
}

@Xss 어노테이션을 설정함으로써 필터링에 포함시킬 파라미터를 설정할 수 있고 @Xss 어노테이션이 없으면 Xss 필터링을 하지 않습니다.
또한, @Xss어노테이션 안에 값을 설정함으로써, 어떠한 타입의 인풋 데이터를 필터링 할 지 결정할 수 있습니다.

라이브러리에서 기본적으로 제공하는 값들은 다음과 같습니다.
 
- @Xss("json") : Json 타입의 인풋 데이터를 필터링 합니다.
- @Xss("string") : String 타입의 인풋 데이터를 필터링 합니다.
- @Xss : 만약 비어있다면, 필터링할 파라미터의 타입 이름을 모두 소문자로 바꾼값이 바인딩 됩니다.
 
다운로드 방법

repositories {
    mavenCentral()
    maven {url 'https://jitpack.io'} // 1. xss-stage는 jitpack을 이용해 배포되고 있으므로 이 라인을 꼭! 추가해줘야 함.
}

dependencies {
   implementation 'com.github.xss-stage:xss-core:1.2' // 2. 필수 - XssFiltering 확장과 적용하는 방법을 제공함.
   implementation 'com.github.xss-stage:xss-extension-string:1.2' // 3. string 형태의 데이터 타입을 필터링 하고 싶으면 추가
   implementation 'com.github.xss-stage:xss-extension-json:1.2.1' // 4. json 형태의 데이터 타입을 필터링 하고 싶으면 추가
}

위 코드와 같이
1, 2, 3, 4번을 (3, 4 번의 경우 필요한 경우) 받으면서 사용가능 합니다.
 
또한, 필요한 경우, xss filtering 규칙들을 확장을 통해 생성할 수 있는데, 자세한 사항은 프로젝트 링크를 참조하세요
https://github.com/xss-stage/xss-core

GitHub - xss-stage/xss-core: 🛑 Java Xss filtering library

🛑 Java Xss filtering library. Contribute to xss-stage/xss-core development by creating an account on GitHub.

github.com