1. 서버 보안의 기본 원칙에 대해 설명해주세요
  2. 쿠키와 세션의 차이점이 무엇인지 설명해주세요
  3. CSRF 공격이 무엇이며, 이를 방지하는 방법을 설명해주세요
  4. HTTPS와 SSL 인증서의 역할에 대해 설명해주세요
  5. JWT의 개념과 이를 사용한 인증 방식을 설명해주세요

1. 서버 보안의 기본 원칙

서버 보안의 기본 원칙에 대해 설명해주세요

정보보안의 기본 3원칙

  • 기밀성, 무결성, 가용성

기밀성

  • 승인받은 사람만 정보에 접근할 수 있는 성질
  • 암호화, 접근제어
  • 온라인 뱅킹 시스템 계좌 정보와 개인 정보는 기밀성이 중요하기 때문에 암호화

무결성

  • 인가되지 않은 사용자가 정보를 수정/삭제 할 수 없도록 보장하는 원칙
  • 정확하고 안전한 상태 유지 보장
  • 해시함수, 디지털 서명, 버전관리 시스템 등
  • 주문 내역 임의로 변경되면 안됨

가용성

  • 인가된 사용자가 필요한 정보를 언제든지 접근할 수 있도록 보장
  • 백업, 분산 네트워크
  • 사용자가 언제든지 파일에 접근할 수 있어야 함 데이터센터가 장애를 겪더라도 다른 데이터 센터에서 서비스가 계속 제공되도록 보장, AWS S3 서비스는 여러 지역에 데이터 복제본 유지

2. 쿠키와 세션

쿠키와 세션의 차이점이 무엇인지 설명해주세요

쿠키

  • 웹 브라우저에 저장되는 데이터 조각
  • 클라이언트 측에서 정보를 저장하고 관리하는 방식
  • 웹 서버가 사용자의 브라우저에 설정, 이후 사용자가 방문할 때 쿠키를 서버로 다시 전송
  • 세션 쿠키 : 브라우저가 닫힐 때 삭제, 영구 쿠키 : 설정된 만료시간까지
  • 자동로그인, 사용자 설정 저장
  • 클라이언트에 저장, 설정된 만료 시간에 따라 다름(브라우저를 닫아도 유지될 수 있음)
  • 클라이언트에 저장되기 때문에 도난이나 변조 위험
    • 중요한 정보는 서버에 저장, 쿠키에는 세션 ID 같은 식별자만 저장
    • HttpOnly 속성을 사용하여 쿠키에 접근하지 못하도록 함
    • Secure 속성을 사용해 HTTPS 연결에서만 쿠키를 전송하도록 설정
  • 데이터 크기 제한
  • 장점 : 지속성, 서버 자원 절약, 간편
  • 단점 : 보안 취약, 크기 제한

세션

  • 사용자와 웹 서버간의 대화를 유지하기 위해 서버 측에서 관리하는 데이터 저장 공간
  • 각 사용자에게 고유한 세션 ID 부여
  • 브라우저에 쿠키로 저장되거나 URL 파라미터로 전달되어 상호작용 추적
  • 인증상태 유지, 데이터 임시 저장, 쇼핑몰 장바구니 등
  • 브라우저를 닫거나 일정 시간동안 활동이 없으면 세션 만료
  • 서버에 저장, 브라우저를 닫거나 타임아웃이 발생하면 만료
  • 서버에서 관리되기 때문에 안전
  • 서버 메모리에 저장되어 더 많은 데이터 저장 가능
  • 장점 : 보안성, 데이터 크기 제한 없음
  • 단점 : 서버 자원 소모, 수명 제한, 복잡함

3. CSRF 공격

CSRF 공격이 무엇이며, 이를 방지하는 방법을 설명해주세요

CSRF(Cross-Site Request Forgery)

  • 사이트 간 요청 위조
  • 인증된 사용자가 자신의 의지와는 상관 없이 공격자가 의도한 요청을 특정 웹 애플리케이션에 보냄으로써 사용자의 권한을 악용하는 공격
  • 비밀번호 변경, 계좌 이체

공격 시나리오

  1. 사용자가 웹 사이트에 로그인한 상태
  2. 공격자가 해당 웹사이트로 악의적인 요청을 보내는 웹 페이지를 만들어 사용자가 해당 페이지를 열도록 유도
  3. 사용자가 페이지를 열면 로그인된 상태에서 악의적인 요청 전송

CSRF 방지

  1. CSRF 토큰 사용
    • 사용자 세션에 임의의 값을 저장하여 모든 요청마다 해당 값을 포함하여 전송하도록 함
    • 서버에서 요청을 받을 때마다 세션에 저장된 값과 요청으로 전송된 값이 일치하는지 검증
  2. Referer check
    • HTTP 요청 헤더 정보에서 Referrer 정보를 확인하여 요청이 동일한 도메인에서 왔는지 검증
  3. SameSite
    • 쿠키에 SameSite 속성을 설정하여 같은 사이트에서만 쿠키가 전송되도록 제한
  4. CAPTCHA

4. HTTPS, SSL

HTTPS와 SSL 인증서의 역할에 대해 설명해주세요

HTTPS

  • HTTP 프로토콜을 사용하여 웹사이트와 브라우저간의 통신을 암호화하는 보안 프로토콜

SSL

  • 웹사이트와 브라우저간의 통신을 암호화하기 위해 사용되는 디지털 인증서

SSL 동작 과정

  1. 클라이언트가 서버에 연결 요청을 보냄
  2. 서버는 SSL/TLS 인증서를 클라이언트에게 보냄
  3. 클라이언트는 인증서를 검증하고, 서버와 대칭키를 생성하여 데이터 암호화
  4. 암호화된 데이터 전송

SSL/TLS 인증서를 검증하는 과정 때문에 성능이 조금 떨어짐

5. JWT

JWT의 개념과 이를 사용한 인증 방식을 설명해주세요

JWT

  • JSON Web Token
  • JSON 객체를 사용하여 정보를 안전하게 전송하기 위한 개방형 표준
  • 인증 및 정보 교환을 위한 토큰 기반 시스템 제공
  • 인증과 권한 부여에 많이 사용됨

JWT 구조

  1. 헤더 : JWT가 어떤 알고리즘을 사용하여 서명되었는지에 대한 정보
  2. 페이로드 : 실제로 전송할 정보 포함, 사용자 정보나 권한에 대한 데이터
  3. 서명 : 헤더와 페이로드는 Base64로 인코딩 후 비밀 키를 사용해 서명

인증 과정

  1. 사용자 로그인 : 로그인 인증 후 JWT 발급
  2. API 요청 JWT를 인증 헤더에 포함시켜 API 요청
  3. 서버 검증 JWT의 서명 검증 후 요청 처리

장점

  1. 무상태성
  2. 자동화된 인증 처리
  3. 보안성

단점

  1. 토큰 만료되면 재로그인 해야함 리프레시 토큰 사용
  2. 토큰 크기가 큼