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

enoch·2020년 10월 31일
0
post-thumbnail

XSS(Cross Site Scripting) 공격

  • 웹 해킹 공격 기법
  • 악의적으로 스크립트 코드를 삽입하여 개발자가 고려하지 않은 기능을 작동시킴
  • 다른 사용자가 스크립트를 실행하게 하므로써 정보 탈취가 가능하다.

XSS Filter

XSS 공겨은 악성 스크립트를 삽입하는 방식이다.
<script>&lt;script&gt; 와같은 모양으로 바꿔주는 필터를 사용하여 해결할 수 있다.

lucy-xss-filter

lucy-xss-filter (Github) : https://github.com/naver/lucy-xss-filter
네이버에서 제공해주는 라이브러리이다.

특징

  • 화이트 리스트 방식
  • 규칙을 선언한 파일 사이의 상속, 오버라이딩 가능
  • 메모리를 효율적으로 쓰는 SAX방식의 HTML파싱 모듈 제공
    HTML5, HTML4 Transitional DTD명세 지원
  • 공격 패턴을 검출 시 주석으로 알림
  • 기능 확장이 지점 제공 (ElementListener, AttributeListener)
  • Malformed HTML도 파싱 가능
  • Dom방식과 SAX방식
  • Spring에 적용하는 방법도 네이버에서 제공해주고 있다.
  • https://naver.github.io/lucy-xss-filter/kr/

Dom방식

  • 처음 xml 문서 전체를 메모리에 로드하여 값을 읽는다.
  • xml 문서 전체가 메모리에 올라가 있으므로 노드 들을 빠르게 검색 하고 데이터의 수정과 구조 변경이 용이 하다.
  • 호불호가 갈리지만 dom방식으로 xml문서를 핸들링 하는것이 sax방식보다 직관적이다.

Sax방식

  • xml 문서를 순차적으로 읽어 내려가며 노드가 열리고 닫히는 부분에서 이벤트가 발생 한다.
  • xml 문서 전체를 메모리에 올리지 않기 때문에 메모리 사용량이 적고 단순히 읽기만 할때 빠른 속도를 보인다.
  • 발생한 이벤트를 핸들링 하여 변수에 저장하고 활용하는 방식이기 때문에 문서의 중간 중간 검색하고 노드를 수정하기가 어렵다.
  • dom방식에 비해 구현이 방식이 복잡하고 직관적이지 않다.
profile
🍣 초밥을 사랑하는 백엔드 개발자 입니다 :)

0개의 댓글