Cookie/ CSRF

yg kim·2021년 9월 8일
0

인증/보안

목록 보기
3/5

Cookie

  • 쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법의 하나

  • 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 전송하는 것도 포함

  • 서버가 클라이언트에 데이터를 저장할 수 있음

  • 데이터를 저장한 이후 아무 때나 데이터를 가져올 수 없습니다. 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있음

  • Cookie options

    • Domain - ex) naver.com

    • Path - 세부 경로 지정할 때 사용 naver.com 뒤에 오는 ex) /user/login

    • MaxAge or Expires - 쿠키 유효 기간 설정

    • Secure - 쿠키를 전송해야 할 때 사용하는 프로토콜에 따른 쿠키 전송 여부를 결정 -> true이면 'HTTPS' 에서만 쿠키 전송 가능

    • SameSite - Cross-Origin 요청을 받은 경우 해당 옵션에 따라 달라짐

      • Lax - Cross-Origin 요청이면 'GET' 메소드에 대해서만 쿠키를 전송
      • Strict - ross-Origin이 아닌 same-site 인 경우에만 쿠키를 전송
      • None - 항상 쿠키를 보내줄 수 있습니다. 다만 쿠키 옵션 중 Secure 옵션이 필요

해당 옵션들을 지정해 서버에서 클라이언트로 쿠키를 전송하면 Set-Cookie라는 프로퍼티에 쿠키를 담아 전송함.

기본적으로는 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험

CSRF(Cross Site Request Forgery)

특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격

  • 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것
  • 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출됨
  • 기본적으로는 XSS 공격과 매우 유사하며 XSS 공격의 발전된 형태
  • 하지만 XSS 공격은 악성 스크립트가 클라이언트에서 실행되는 데 반해, CSRF 공격은 사용자가 악성 스크립트를 서버에 요청한다는 차이

공격과정

  1. 이용자는 웹사이트에 로그인하여 정상적인 쿠키를 발급받는다
  2. 공격자는 다음과 같은 링크를 이메일이나 게시판 등의 경로를 통해 이용자에게 전달한다.
    http://www.geocities.com/attacker
  3. 공격용 HTML 페이지는 다음과 같은 이미지태그를 가진다.
    <img src= "https://travel.service.com/travel_update?.src=Korea&.dst=Hell">
    해당 링크는 클릭시 정상적인 경우 출발지와 도착지를 등록하기위한 링크이다. 위의 경우 도착지를 변조하였다.
  4. 이용자가 공격용 페이지를 열면, 브라우저는 이미지 파일을 받아오기 위해 공격용 URL을 연다.
  5. 이용자의 승인이나 인지 없이 출발지와 도착지가 등록됨으로써 공격이 완료된다. 해당 서비스 페이지는 등록 과정에 대해 단순히 쿠키를 통한 본인확인 밖에 하지 않으므로 공격자가 정상적인 이용자의 수정이 가능하게 된다.

공격과정 출처 : 위키백과 - CSRF

profile
발전하고 싶은 사람

0개의 댓글