쿠키, 로컬, 세션

김하은·2023년 4월 21일
0

쿠키

  • 클라이언트에서 생성이 가능하고,
    서버에서도 생성이 가능하다.
  • 지속시간 설정이 가능하다.
  • 용량 4~5KB
  • 서버와 통신시 포함되어 날라갔다가 받아온다.
  • XSS,CSRF 공격에 취약
  • Expire - 날짜를 지정하며 만료 시간이 지나면 브라우저가 삭제합니다.
  • Max-Age - 유효 시간을 지정하며 쿠키를 받은 시간으로부터 계산하며 만료된 경우 브라우저가 삭제합니다.

XSS 공격은 Cross Site Script로 웹사이트 관리자가 아닌 이가 웹페이지에 악성 스크립트를 삽입할 수 있는 공격.
스크립트 코드 같은것을 삽입하여 개발자가 고려하지 않았던 기능이 작동되게 하는공격.
사용자가 해당 url을 클릭하면 그대로 정보를 빼가는 방식이다.

CSRF는 Cross Site Request Forgery라는 용어의 약자로 사이트간 요청 위조라는 의미이다.
정상적인 사용자가 의도하지는 않았으나 의도치 않게 공격자가 의도한 행위를 하게 되어 공격을 수행하는 것을 말한다.

사용자가 보안이 취약한 서버로부터 이미 인증을 받은 상태여야 합니다.
쿠키 기반으로 서버 세션 정보를 획득할 수 있어야 합니다.
공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악하고 있어야 합니다. 예상치 못한 파라미터가 있으면 불가능합니다.
위와 같은 조건이 만족되면 다음과 같은 과정을 통해 CSRF 공격이 수행됩니다.

사용자는 보안이 취약한 서버에 로그인합니다.
로그인 이후 서버에 저장된 세션 정보를 사용할 수 있는 sessionID가 사용자 브라우저 쿠키에 저장됩니다.
공격자는 서버에 인증된 브라우저의 사용자가 악성 스크립트 페이지를 누르도록 유도합니다.
해당 악성 스크립트가 담긴 페이지를 클릭하도록 유도하는 방법은 다양한 것 같으나 몇 가지 유형을 정리하자면 다음과 같습니다.
게시판에 악성 스크립트를 게시글로 작성하여 관리자 혹은 다른 사용자들이 게시글을 클릭하도록 유도합니다.
메일 등으로 악성 스크립트를 직접 전달하거나, 악성 스크립트가 적힌 페이지 링크를 전달합니다.
사용자가 악성 스크립트가 작성된 페이지 접근시 쿠키에 저장된 sessionID는 브라우저에 의해 자동적으로 함께 서버로 요청됩니다.
서버는 쿠키에 담긴 sessionID를 통해 해당 요청이 인증된 사용자로부터 온 것으로 판단하고 처리합니다.


localStorage

  • 클라이언트에서 생성
  • 지속시간은 명시적으로 삭제할 때 까지 이지만 이것도 유효기간을 설정할 수 있는 코드가 존재한다.
    (해당 코드를 찾아보다가 뭔말이고 어디서부터 어디까지가 무슨 코드인지 파악하지 못해 사용하다가 말았던 기억이 난다.)
  • 용량은 쿠키보다는 많은 데,약 5MB로 본다.( 브라우저마다 차이 존재)
  • 서버와는 통신하지 않는다.
  • XSS공격에 취약

sessionStorage

  • 클라이언트에서 생성
  • 탭이나 윈도우를 닫을때 까지 지속된다.
  • 5MB의 용량
  • 서버와 통신 없음
  • XSS공격에 취약

참고: https://junhyunny.github.io/information/security/spring-boot/spring-security/cross-site-reqeust-forgery/

0개의 댓글