XSS Filter

Eaden·2020년 6월 14일
1

XSS 란?

  • XSS (Cross Site Script)
  • 서버로 보내는 입력값에 자바스크립트를 보내서 다른 사용자에게 자신이 만든 스크립트를 실행시키도록 하는 행위
  • 따라서, 사용자의 입력이 있는 기능에는 XSS 에 대한 필터링 처리가 되어 있어야 한다.
    • 아무 입력에서나 아래와 같이 작성 후 글을 열었을때 스크립트가 실행된다면 해당 서비스는 XSS 필터링 처리가 되어 안되어 있는 것이다.
      <'script>alert('script ok');</'script>

일반적인 XSS Filter 구현


특정 요청 필드에 대해서만 XSS Filter 적용

  • 필자의 상황 예시
    • 프론트와 백엔드가 분리되어 있는 서비스에서 백엔드 API 서비스를 개발
      (JSON 포맷의 REST API 서버)
    • 대부분 어드민에서 태그가 포함되어 작성된 컨텐츠(에디터를 통해 꾸며진)을 프론트엔드에 제공
    • form-data 도 아니었고, 전체 응답에 XSS 필터링 처리는 맞지 않은 상황
      • 전체 응답에 대해 XSS 필터링 처리하게 되면 프론트엔드에서 한번더 태그로 변환하여 보여줘야 했으며
      • 사용자의 입력도 일부 기능에서만 행해짐
  • 특정 요청 필드에 대해서만 XSS 필터링 처리하는 방법
    • XSS 필터링하는 @JsonDeserializer 정의
    • 대상 DTO 의 필드에 적용
  • 관련 참조 링크

태그 Escape 하는 방법

  • org.springframework.web.util.HtmlUtils
// < 기호를 &lt;로, & 기호를 &amp;로 바꾸는 등의 처리
String htmlEscape(String input);
profile
일단 기록하자!!!

0개의 댓글