SpringBoot 는 어떻게 XSS 주입 공격 을 방지 합 니까?

XSS 공격 이 뭐야?
크로스 스 크 립 트(XSS)공격 에서 공격 자 는 피해자 의 브 라 우 저 에서 악성 스 크 립 트 를 실행 할 수 있 습 니 다.이러한 공격 은 일반적으로 웹 페이지 에 악성 코드(JavaScript)를 삽입 함으로써 이 루어 진다.공격 자 는 공격 사용 후 일반:
웹 페이지 내용 수정
  • 사용 자 를 다른 사이트 로 재 설정 합 니 다
  • 사용자 의 쿠키 를 방문 하고 이 정 보 를 이용 하여 사용 자 를 사칭 합 니 다
  • 4.567917.사용자 시스템 과 관련 된 관건 적 인 정 보 를 방문 합 니 다.예 를 들 어 지리 적 위치,네트워크 카메라,파일 시스템목마 기능 을 응용 프로그램 에 주입 하 다.
    공격 당 한 사용자 가 프로그램 에서 더 높 은 권한 을 가지 고 있다 면.공격 자 는 응용 프로그램 을 완전히 제어 하고 모든 사용자 와 데 이 터 를 파괴 할 수 있다.
    XSS 공격 유형
    흔히 볼 수 있 는 XSS 공격 은 주로 세 가지 가 있 는데 그것 이 바로 저장 형 XSS 공격,반사 형 XSS 공격 과 DOM-based 형 XSS 공격 이다.
  • 저장 형 은 주로 XSS 코드 를 서버(데이터베이스,파일 시스템 등)에 저장 하고 사용자 가 나중에 이 자원 을 다시 요청 할 때 이 XSS 코드 를 다시 분석 하여 공격 을 가 합 니 다
  • 4.567917.반사 형 은 한 프로그램 이 동적 페이지 를 사용 하여 사용자 에 게 오류 메 시 지 를 표시 할 때 메시지 에 악성 코드 를 주입 하면 XSS 반사 형 공격 을 할 수 있 습 니 다
  • DOM-based 는 주로 스 크 립 트 를 통 해 클 라 이언 트 의 DOM 구 조 를 직접 수정 하 는데 보통 전단 자바 스 크 립 트 에 속 하 는 구멍 입 니 다
  • 어떻게 XSS 주입 을 막 습 니까?
    다음은 북 을 만 들 고 데이터베이스 에 저장 하 는 간단 한 POST 방법 입 니 다.
    
    @RestController
    @RequestMapping("/books")
    public class BookController {
    
        @Autowired
        IBookService bookService;
    
        @PostMapping
        public void saveBook(@RequestBody Book book) {
            bookService.save(book);
        }
    }
    
    저 희 는 저장 할 때 type 값 을 js 주입 하여 저장 형 XSS 공격 을 모 의 할 수 있 습 니 다.

    지금 우리 가 요청 하 겠 습 니 다.이곳 의 자 바스 크 립 트 는 alert 한 문장 만 사용 할 수 있 지만,이러한 구멍 은 다른 사람 에 게 이용 되 어 다른 악성 코드 를 주입 할 수 있 습 니 다.

    X-XSS-보호 응답 헤드
    일부 브 라 우 저 에는 필터 반사 형 XSS 공격 에 대한 지원 이 내장 되 어 있다.어느 정도 XSS 보호 에 도움 이 됩 니 다.HTTP 응답 헤더 에 다음 과 같은 내용 을 추가 하여 이 기능 이 활성화 되 었 는 지 확인 하고 브 라 우 저 에 XSS 공격 이 감지 되 었 을 때 차단 하도록 지시 해 야 합 니 다.
    
    X-XSS-Protection: 1; mode=block
    
    프로젝트 가 Spring Security 를 도입 하면 기본 값 으로 이 레이 블 을 자동 으로 추가 합 니 다.
    Content-Security-Policy 응답 헤더 추가
    호 환 콘 텐 츠 보안 정책 브 라 우 저 는'허용'열 거 된 도 메 인 에서 받 은 원본 파일 에서 불 러 온 스 크 립 트 만 실행 하고 내 연 스 크 립 트 와 같은 모든 스 크 립 트 를 무시 합 니 다.브 라 우 저의 콘 텐 츠 보안 정책 기능 을 사용 하기 위해 아래 레이 블 을 추가 할 수 있 습 니 다.
    
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity httpSecurity) throws Exception {
            httpSecurity
                    .csrf().disable()//             XSS  ,     CSRF  。        。
                    .authorizeRequests().anyRequest().authenticated()
                    .and().httpBasic()
                    .and()
                    .headers().contentSecurityPolicy("script-src 'self'");
        }
    }
    
    다음은 CSP 를 지원 하 는 모든 브 라 우 저 입 니 다.

    입 참 검증
    이 필드 는 중국어 영문 과 숫자 문자 만 필요 하 다 는 것 을 알 고 있 기 때문에 Spring 의 Validator 를 사용 하여 필드 에@Pattern 주 해 를 추가 할 수 있 습 니 다.
    
        @NotNull
        @Pattern(message="            ", regexp = "[\u4e00-\u9fa5_a-zA-Z0-9]+")
        private String type;
    
    그리고@Valid 를 Book 을 받 는 방법 에 추가 하면 요청 이 발생 하면 자동 으로 검 증 됩 니 다.
    
    @PostMapping
    public void saveBook(@RequestBody @Valid Book book) {
        bookService.save(book);
    }
    
    클 라 이언 트
    현재 주류 의 몇 가지 전단 구 조 는 Angular,React,Vue 와 같이 전통 적 인 개발 이 가 져 올 수 있 는 문 제 를 피 할 수 있다.
  • XSS 오 류 를 체계적으로 막 기 위해 기본적으로 Angular 는 모든 값 을 신뢰 할 수 없 는 것 으로 간주 합 니 다.속성,속성,스타일,클래스 바 인 딩 또는 플러그 인 을 통 해 값 을 템 플 릿 에서 DOM 에 삽입 할 때 Angular 는 신뢰 할 수 없 는 값 을 정리 하고 의 미 를 바 꿉 니 다
  • JSX(React)를 사용 하면 악성 코드 가 포 함 될 수 있 는 문자열 을 전달 하 는 것 이 아니 라 이벤트 처리 프로그램 으로 함 수 를 전달 할 수 있 습 니 다
  • React 보기 의 문자열 변 수 는 자동 으로 전 의 됩 니 다
  • Vue 의 공식 문서 에 도 설명 이 있 습 니 다.v-html 의 동적 렌 더 링 은 임의의 html 가 매우 위험 하고 XSS 주입 을 야기 하기 쉬 우 므 로 v-html 는 사용자 가 제출 한 정보 에 영원히 사용 하지 않 습 니 다
  • 총결산
    XSS 의 빈틈 을 방지 하 는 것 은 주로 다음 과 같은 조치 의 조합 과 관련된다.
  • X-XSS-Protection 응답 헤드 를 이용 하여 브 라 우 저의 지원 을 이용 하여 반 사 된 XSS 공격 을 제한 합 니 다
  • 4.567917.Content-security-Policy 응답 헤드 를 이용 하여 브 라 우 저의 CSP 기능 을 사용 합 니 다4.567917.Validator 를 사용 하여 입력 정 보 를 검사 합 니 다
  • 클 라 이언 트 측 React 는 JSX 전달 함 수 를 이벤트 처리 프로그램 으로 사용 하고 Vue 는 신뢰 할 수 있 는 내용 에 만 v-html 를 사용 하 며 사용자 가 입력 한 정 보 는 반드시 v-html 를 사용 하지 않도록 해 야 합 니 다
  • 여기 서 SpringBoot 가 XSS 주입 공격 을 어떻게 방지 하 는 지 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 가 XSS 주입 공격 을 방지 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기