티스토리 뷰

BackEnd/Java

CSRF

철철22 2018. 6. 26. 14:44
반응형


CSRF?

사이트 간 요청 위조(Cross-site Request Forgery)

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


이 공격의 예방법
1. XSS에 나오는 모든 예방법을 적용합니다.
- 결론적으로 자바스크립트가 실행되면 해당페이지에 csrf 토큰이 있을경우 해당 값을 추출해서 요청할 수 있습니다.

2. csrf 토큰을 사용합니다.

3. 요청이 Accept:image/webp,image/*,*/* 같이 페이지 요청이 아닌경우 거부합니다. (다만 csrf 토큰이 있으면 이것을 별도로 처리하지 않아도됩니다.)

주의점
csrf 토큰이 요청을 완료할 때까지 만료되지 않게 해야합니다.

- 다만 많은 WAS에서 토큰의 생명주기는 세션의 생명주기와 같은경우가 많아 특별히 신경쓰지 않아도 됩니다. (세션이 끊어지지 않게 하면됩니다.)
- 만일 해당 생명주기가 서로 다를경우 ajax을 통해 처리되는 부분은 심각하게 고민을 해봐야할 것 입니다.



Spring boot

 

WebSecurityConfig 에서 http.csrf().disable(); 되어 있음




XSS?


xss 란 주로 자바스크립트 혹은 심어져있는 플래시의 자바스크립트로 현재 접속해있는 사용자의 쿠키(정확히는 세션아이디)를 훔쳐서 피해자로 위장하는 해킹 기법


http는 상태가 없는 프로토콜


하지만 상태가 없는 사이트란.. 사용성이 끔찍하기 때문에 쿠키의 세션아이디(물론 세션아이디의 이름이 세션아이디는 아니며, 임의로 지정할 수 있습니다.)라는 임시 난수를 넣고 이 값을 통해 상태(세션)을 구현


그렇게 되면 브라우저는 이 쿠키값을 기억하여 매번 서버로 보내주기에 서버에서 해당 세션아이디를 가지고 어떤 사용자인지 식별합니다.
공격자는 주로 게시판/이메일등에 html 을 작성, 주로 자바스크립트나 플래시를 이용해 document.cookie 를 탈취하는 방법으로 해당 쿠키를 꺼내오게 되고 피해자는 해당 스크립트가 실행되는 동시에 쿠키값을 복사당하게 됩니다.


이 공격의 예방법


1. 자바스크립트를 막습니다.


2. 플래시는 자바스크립트에 접근할 수 없게 만듭니다..


3. html 자체를 사용하지 못하게 하거나 html 에서 자바스크립트를 실행할 수 있는 모든 부분을 막습니다. 

예를들어 태그의 onclick, onmouseover 같은것도 모두 막아야합니다.



4. httpOnly 옵션 사용 : document.cookie 로 뽑아 쓸 수 없는 오직 http 전송 목적으로만 사용됩니다. (다행히 현재는 브라우저에서 모두 지원하며, was도 세션아이디 생성시 무조건 이 값입니다.)


- 즉 httpOnly 옵션은 was가 완전 구버전이 아닌이상 신경쓰지 않아도됩니다.



출처 : https://gs.saro.me/#!m=elec&jn=822

 

반응형

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

HashMap  (0) 2018.07.11
JPA에 대한 소개, 활용방안, Spring 프레임워크와 통합  (0) 2018.07.02
영속성  (0) 2018.06.26
Java log  (0) 2018.06.19
필터와 인터셉터  (0) 2018.05.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함