ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • xss
    Java/Spring 2019. 5. 7. 15:42

    ■xss(Cross-site Scripting)란??

    - 특정 웹 페이지의 허점을 찾아 자바스크립트를 사용하여 타인의 정보를 빼가는 공격!




    ■xss 공격의 예

    - <script>공격코드</script> <img onerror="공격코드">

       <a href="공격코드"> <iframe src="공격코드"> 태그 등을 

    form 입력 페이지 등을 통해 서버 DB에 저장시킨다.


    - 공격 코드는 js로 구성되기도 하고, xss체크에 걸리지 않기 위해 아스키코드로 

    변환한 js 코드로 구성되기도 한다.


    - 그리고 피해자가 특정 페이지에 접속하면 공격자가 저장한 악성 데이터가 로드되고 

    실행된다. 피해자의 브라우저는 공격자의 스크립트에 의해 세션을 탈취당하여 개인 정보를 

    털리기도 하고, 순식간에 악성 사이트로 이동되기도 한다.



    - 더 많은 예 : https://handongchoi.com/2017/11/18/xss-script/





    ■xss를 방어하기 어려운 이유??

    - 법을 통해 범죄자를 100% 없앨 수 없는 것과 비슷하다고 생각한다. 법을 아무리 정교하게 

    만들어도 어떻게든 허점을 찾아 부당한 이득을 취하려는 범죄자가 생기기 마련이다


    - 서버가 사용자의 브라우저로 html, js, css 파일들을 내려줄 때, 같이 전송될 수 있는 
    공격 코드들을 필터링 해야 한다. 그런데 그 공격들은 정체되어 있지 않고 매번 진화한다.
    어떤 형태로 변화할 지 모르는 스크립트 공격들을 완벽히 예측해서 막기는 어렵다.




    ■그래도 최대한 xss를 막으려면??

    - 웹 페이지 입력 폼에서 올바른 유효성 검사 또는 필터링 처리 기능을 추가하고, 

    클라이언트에서 실행될 코드로 악성 코드를 필터해야 한다.


    - 직접 구현:


    private String cleanXSS(String value) {
     
        value = value.replaceAll("<""& lt;").replaceAll(">""& gt;");
        
        value = value.replaceAll("\\(""& #40;").replaceAll("\\)""& #41;");
     
        value = value.replaceAll("'""& #39;");
     
        value = value.replaceAll("eval\\((.*)\\)""");
     
        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\""");
     
        value = value.replaceAll("script""");
     
        return value;
     
    }
    cs


    - 네이버의 lucy-xss-filter와 lucy-xss-servlet-filter 라이브러리를 이용한 구현

    - maven or gradle에 dependency를 추가하고 필터클래스 등 필요한 곳에 클래스 사용


    - 자세한 사용법 참고

    -https://github.com/naver/lucy-xss-filter

    -https://github.com/naver/lucy-xss-servlet-filter







    http://egloos.zum.com/nestofeagle/v/1809584



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

    @ControllerAdvice와 @ExceptionHandler  (0) 2020.07.27
    Spring 어노테이션  (0) 2019.05.20
    IOC (DI)  (0) 2019.04.06
    스프링이란  (0) 2019.04.06
    프레임워크vs라이브러리  (0) 2019.04.06

    댓글

Designed by Tistory.