시작이 반

[Spring] CSRF, XSS 본문

Programming/Spring

[Spring] CSRF, XSS

G_Gi 2021. 2. 11. 17:01
SMALL

XSS : Cross Site Scripting

게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입하여 공격하는 기법

ex)

<script>
    for (var i =0; i < 50000; i++){
         alet("안녕");
     }
</script>

막는 방법은 간단히 '<' 나 '<script>'를 못적게 막으면된다. 하지만 이런것을 하나하나 막기 힘드니까

naver가 제공하는 lucy를 사용하면 간단히 막기 가능하다.

 

CSRF : Cross-site request forgery

웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법이다.

 

ex)

http://naver.com/admin/point?id=test1234&point=50000 

이런 주소가 있으면 test1234에 포인트가 50000 쌓이는 동작을 한다고 하면

시큐리티 : /admin/** 권한이 admin인 사람만 실행하게끔

 

그런데 유저가 어떤 이미지에 하이퍼링크를 'http://naver.com/admin/point?id=test1234&point=50000' 이런식으로 적어놓고 admin이 이 그림을 클릭하면 admin이니까 동작을 수행할 것이다. -> 공격

 

이런것을 막기위해서는 get 방식보단 post방식으로 사용한다.

 

또는

Referer검증

- 같은 도메인 상에서 요청이 들어오지 않는다면 차단

 

CSRF Token 사용

- 랜덤한 수를 사용자의 세션에 저장하여 사용자의 모든 요청에 대하여 서버단에서 검증하는것

// 로그인시, 또는 작업화면 요청시 CSRF 토큰을 생성하여 세션에 저장한다. 
session.setAttribute("CSRF_TOKEN",UUID.randomUUID().toString()); 

// 요청 페이지에 CSRF 토큰을 셋팅하여 전송한다 
<input type="hidden" name="_csrf" value="${CSRF_TOKEN}" />

 

CAPTCHA사용

- 캡차이미지상의 숫자/문자가 아니라면 해당 요청을 거부하는 것

 

참고:

LIST