ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Secure - XSS
    Java/Spring 2018. 9. 10. 14:31
    반응형


    XSS - 크로스 사이트 스크립팅

    공격자가 악성 스크립트를 입력값으로 입력했다면 공격을 당하는 사용하는 해당 스크립트로 인해 쿠키 값이 유출되거나, 

    해당 사용자의 권한으로 웹 애플리케이션의 기능이 악용 또는 오용되거나, 또는 피싱 사이트로 유도되어 개인정보가 유출되는 경우가 발생될 수 있다.


    XSS 공격 유형


    Reflective XSS

    공격자가 악성스크립트가 포함된 URL을 클라이언트에게 노출시켜 클릭하도록 유도하여 쿠키 정보를 탈취하거나, 피싱사이트, 불법 광고 사이트로 이동하게 한다.


    Stored XSS

    악성 스크립트를 DOCUMENT에 저장하여 해당 DOCUMENT 정보를 이용하는 애플리케이션을 통해, 시스템을 사용하는 모든 사용자들이 해당 스크립트를 실행하게 함으로써 

    사용자의 쿠키 정보를 탈취하거나 피싱 사이트, 불법 광고 사이트로 이동하게 한다.

    - DB를 사용한다, 페이지가 들어가거나 동작을하면 스크립트가 돈다.


    DOM XSS

    DOM은 HTML, XML을 다루기 위한 프로그래밍 API로 

    Ajax 프로그램에서 사용되는 자바 스크립트를 이용하여 브라우저에게 수신된 데이터를 다시 잘라서 Document에 write 하는 작업을 수행하는 경우 XSS 공격이 가능하게 한다.

    - JSON으로 맞통신하면 안전하다, JSON으로 주고 HTML로 받으면 매우 취약하다.


    비슷한 유형으로 CSRF가 있다.- 자동글쓰기



    대응기법

    Reflective XSS 와 Stored XSS 취약점 제거

    XSS 공격으로부터 웹 애플리케이션을 방어하는 최선의 방법은 애플리케이션 차원에서 HTTP 헤더, 쿠키 쿼리 스트링, 폼 필드, 히든 필드 등의 

    모든 인자들에 대해 허용된 유형의 데이터만을 받아들이도록 입력값 검증을 실시한다.


    DOM XSS 취약점 제거

    가능한한 애플리케이션은 DOM 데이터를 처리하기 위한 클라이언트측 스크립트 사용을 자제한다. 하지만, HTML 태그를 지원해야 하는 경우 입력값/출력값 검증을 철저하게 한다.


    시큐어 코딩 기법

    HTML요소의 내용에 신뢰할 수 없는 데이터를 삽입하기 전에 HTML 인코딩 수행

    사용자의 입력값을 HTML 인코딩하여 반환하는 방식은 악의적인 사용자가 삽입한 스크립트가 다른 사용자에게 실행 가능한 형태로 전달되지 않기 때문에 

    XSS 취약점을 막는데 유용하다.

    다음과 같은 문자들을 사용자에게 반환할 때는 적절한 HTML 엔티티 인코딩으로 변환하면 자바스크립트 기반의 공격에 대해 상당수 방어할 수 있다.



    외부 프리 라이선스 라이브러리를 사용하여 출력값에 대한 XSS 취약점 제거

    네이버에서 제작/배포하고 있는 Lucy-XSS 라이브러리를 이용하여 간단하게 XSS 취약점을 제거할 수 있다.

    Lucy-XSS Filter는 악의적인 XSS 공격으로부터 웹 애플리케이션을 보호하는 기능을 화이트리스트 설정 방식으로 구현했다.

    입력파라미터로 전달되는 데이터의 경우 XSS 코드를 포함하고 있는지 판단하기 어렵기 때문에(URL Encoding 방식, 대소문자 방식 등등) 

    Lucy-XSS Filter를 사용하여 필터링 하기 어렵다.

    때문에 Lucy-XSS Filter는 출력 부분을 담당하는 로직에서 사용할 것을 권장한다.

    반응형

    'Java > Spring' 카테고리의 다른 글

    Secure - File  (0) 2018.09.10
    Secure - CSRF  (0) 2018.09.10
    @Qualifier("")  (0) 2018.09.08
    Secure Coding - 패스워드 정책  (0) 2018.09.07
    Secure Coding - Command Injection  (0) 2018.09.07

    댓글

Designed by Tistory.