항목 개념 및 특징
쿠키 정의: 사용자의 정보를 저장하고, 개인화된 사이트를 제공하기 위해 사용되는 작은 텍스트 파일
  1. HttpOnly: 자바스크립트를 통한 쿠키 접근을 차단하여, XSS 공격으로부터 쿠키 정보를 보호 → XSS 공격 방지
  2. Secure: 쿠키가 HTTPS를 통해서만 전송되도록 하여, 데이터가 암호화된 연결을 통해서만 전송되게 함으로써 보안 → MITM 방지
  3. SameSite: 쿠키가 퍼스트파티에서만 전송되도록 제한하는 용도로 사용 → CSRF 공격 방지 | | | | | 세션 | 정의: 컴퓨터 프로세스들 사이에서, 서로를 인식한 후 데이터 송수신을 마칠 때까지의 기간의 상태정보 ex) 로그인을 한 뒤 로그아웃하기 전까지, 또는 HTTP 요청을 보내고 응답을 받을 때까지의 모든 과정

1️⃣ HTTP가 Stateless하다는 의미

2️⃣ 쿠키가 전송됨에 따른 네트워크 오버헤드 문제와 해결 방법

쿠키는 DomainPath가 일치하면 해당 웹 서버로 모든 쿠키를 담아 보내기 때문에, 쿠키로 저장하려는 정보량이 많아질수록 요청 크기가 커질 수 있다. 이는 불필요한 네트워크 오버헤드를 발생시켜 요청 사이즈가 커지는 원인이 된다.

따라서 쿠키를 단순한 저장소로 사용하는 것은 권장되지 않고 있다. 웹 서버에게 전달할 필요가 없는 정보의 경우 웹 스토리지(Storage) 사용할 수 있다. 또다른 해결 방법으로는 세션이 있다. 세션은 정보를 웹 서버 측에 저장하므로 클라이언트의 요청 크기에 영향을 주지 않는다.

3️⃣ 쿠키의 만료 시간을 설정하는 Expires와 Max-Age 옵션의 차이점

  1. Expires : 특정 날짜와 시간을 지정하여 쿠키의 만료 시점을 정하는 방식으로 쿠키는 Expires에 설정된 날짜가 지나면 자동으로 삭제된다.

특징: 절대 시간 기준으로 만료됨으로 서버의 시간과 클라이언트의 시간이 다를 경우 오차 발생 가능

  1. Max-Age: 쿠키가 생성된 시점부터 몇 초 동안 유효한지를 설정하는 방식으로 쿠키가 현재 시점부터 Max-Age에 설정된 초(second) 단위의 시간이 지나면 자동으로 삭제된다.

특징: 상대적인 시간 기준으로 만료됨으로 서버와 클라이언트의 시간 차이에 영향을 받지 않는다.

4️⃣ CSRF 공격이란? SameSite 속성을 통해 예방 방법

  1. Strict: 크로스사이트 요청에서는 쿠키를 전송하지 않음
  2. Lax: 일부 안전한 크로스사이트 요청(GET, 링크 클릭 등)만 허용
  3. None: 모든 요청에 대해 쿠키 전송 (Secure 필수)

5️⃣ XSS 공격의 동작 원리와, HttpOnly 속성이 쿠키를 보호하는 방식

XSS(Cross-Site Scripting) 공격은 공격자가 사용자의 웹 브라우저에 악성 스크립트를 주입하고 실행하게 만드는 보안 취약점을 이용한다. 이 스크립트는 사용자의 세션 쿠키를 탈취하여 공격자에게 전송하는 것을 목표로 할 수 있는데, 세션 쿠키가 HttpOnly로 설정되어 있다면, 이러한 스크립트는 쿠키에 접근할 수 없게 된다.