XSS(Cross Site Scripting)과 Lucy-xss-filter(xss-filter)

· 유창연 · 3 min read

XSS 공격의 원리와 방어 방법을 알아보고, 네이버에서 제공하는 Lucy-xss-filter 라이브러리의 특징과 Spring 적용 방법을 정리합니다.

  • XSS(Cross Site Scripting) 공격
  • 웹 해킹 공격 기법
  • 악의적으로 스크립트 코드를 삽입하여 개발자가 고려하지 않은 기능을 작동시킴
  • 다른 사용자가 스크립트를 실행하게 하므로써 정보 탈취가 가능하다.
  • XSS Filter
  • XSS 공격은 악성 스크립트를 삽입하는 방식이다.
  • <script>를 <script> 와같은 모양으로 바꿔주는 필터를 사용하여 해결할 수 있다.
  • lucy-xss-filter
  • lucy-xss-filter (Github)
  • 네이버에서 제공해주는 라이브러리이다.
  • 특징 (출처 naver.github.io)
  • 화이트 리스트 방식
  • 규칙을 선언한 파일 사이의 상속, 오버라이딩 가능
  • 메모리를 효율적으로 쓰는 SAX방식의 HTML파싱 모듈 제공
  • HTML5, HTML4 Transitional DTD명세 지원
  • 공격 패턴을 검출 시 주석으로 알림
  • 기능 확장이 지점 제공 (ElementListener, AttributeListener)
  • Malformed HTML도 파싱 가능
  • Dom방식과 SAX방식
  • Spring에 적용하는 방법도 네이버에서 제공해주고 있다.
  • naver.github.io/lucy-xss-filter/kr/

문서를 읽던 중 Dom방식과 SAX방식이 무엇인지 궁금하여 찾아보다가 잘 정리된 글을 발견했다.

humble.tistory.com/23

Dom방식

  1. 처음 xml 문서 전체를 메모리에 로드하여 값을 읽는다.

  2. xml 문서 전체가 메모리에 올라가 있으므로 노드 들을 빠르게 검색 하고 데이터의 수정과 구조 변경이 용이 합니다.

  3. 호불호가 갈리지만 dom방식으로 xml문서를 핸들링 하는것이 sax방식보다 직관적입니다.

Sax방식

  1. xml 문서를 순차적으로 읽어 내려가며 노드가 열리고 닫히는 부분에서 이벤트가 발생 합니다.

  2. xml 문서 전체를 메모리에 올리지 않기 때문에 메모리 사용량이 적고 단순히 읽기만 할때 빠른 속도를 보입니다.

  3. 발생한 이벤트를 핸들링 하여 변수에 저장하고 활용하는 방식이기 때문에 문서의 중간 중간 검색하고 노드를 수정하기가 어렵습니다.

  4. dom방식에 비해 구현이 방식이 복잡하고 직관적이지 않습니다.

댓글

Back to Blog

관련 게시글

View All Posts »
ResponseEntity는 무엇인가?

ResponseEntity는 무엇인가?

Spring의 ResponseEntity 개념과 사용 이유를 알아봅니다. HTTP 상태 코드를 세밀하게 제어할 수 있는 응답 방식을 설명합니다.