- 서버 보안의 기본 원칙에 대해 설명해주세요
- 쿠키와 세션의 차이점이 무엇인지 설명해주세요
- CSRF 공격이 무엇이며, 이를 방지하는 방법을 설명해주세요
- HTTPS와 SSL 인증서의 역할에 대해 설명해주세요
- JWT의 개념과 이를 사용한 인증 방식을 설명해주세요
1. 서버 보안의 기본 원칙
서버 보안의 기본 원칙에 대해 설명해주세요
정보보안의 기본 3원칙
- 기밀성, 무결성, 가용성
기밀성
- 승인받은 사람만 정보에 접근할 수 있는 성질
- 암호화, 접근제어
- 온라인 뱅킹 시스템 → 계좌 정보와 개인 정보는 기밀성이 중요하기 때문에 암호화
무결성
- 인가되지 않은 사용자가 정보를 수정/삭제 할 수 없도록 보장하는 원칙
- 정확하고 안전한 상태 유지 보장
- 해시함수, 디지털 서명, 버전관리 시스템 등
- 주문 내역 → 임의로 변경되면 안됨
가용성
- 인가된 사용자가 필요한 정보를 언제든지 접근할 수 있도록 보장
- 백업, 분산 네트워크
- 사용자가 언제든지 파일에 접근할 수 있어야 함 → 데이터센터가 장애를 겪더라도 다른 데이터 센터에서 서비스가 계속 제공되도록 보장, AWS S3 서비스는 여러 지역에 데이터 복제본 유지
2. 쿠키와 세션
쿠키와 세션의 차이점이 무엇인지 설명해주세요
쿠키
- 웹 브라우저에 저장되는 데이터 조각
- 클라이언트 측에서 정보를 저장하고 관리하는 방식
- 웹 서버가 사용자의 브라우저에 설정, 이후 사용자가 방문할 때 쿠키를 서버로 다시 전송
- 세션 쿠키 : 브라우저가 닫힐 때 삭제, 영구 쿠키 : 설정된 만료시간까지
- 자동로그인, 사용자 설정 저장
- 클라이언트에 저장, 설정된 만료 시간에 따라 다름(브라우저를 닫아도 유지될 수 있음)
- 클라이언트에 저장되기 때문에 도난이나 변조 위험
- 중요한 정보는 서버에 저장, 쿠키에는 세션 ID 같은 식별자만 저장
- HttpOnly 속성을 사용하여 쿠키에 접근하지 못하도록 함
- Secure 속성을 사용해 HTTPS 연결에서만 쿠키를 전송하도록 설정
- 데이터 크기 제한
- 장점 : 지속성, 서버 자원 절약, 간편
- 단점 : 보안 취약, 크기 제한
세션
- 사용자와 웹 서버간의 대화를 유지하기 위해 서버 측에서 관리하는 데이터 저장 공간
- 각 사용자에게 고유한 세션 ID 부여
- 브라우저에 쿠키로 저장되거나 URL 파라미터로 전달되어 상호작용 추적
- 인증상태 유지, 데이터 임시 저장, 쇼핑몰 장바구니 등
- 브라우저를 닫거나 일정 시간동안 활동이 없으면 세션 만료
- 서버에 저장, 브라우저를 닫거나 타임아웃이 발생하면 만료
- 서버에서 관리되기 때문에 안전
- 서버 메모리에 저장되어 더 많은 데이터 저장 가능
- 장점 : 보안성, 데이터 크기 제한 없음
- 단점 : 서버 자원 소모, 수명 제한, 복잡함
3. CSRF 공격
CSRF 공격이 무엇이며, 이를 방지하는 방법을 설명해주세요
CSRF(Cross-Site Request Forgery)
- 사이트 간 요청 위조
- 인증된 사용자가 자신의 의지와는 상관 없이 공격자가 의도한 요청을 특정 웹 애플리케이션에 보냄으로써 사용자의 권한을 악용하는 공격
- 비밀번호 변경, 계좌 이체
공격 시나리오
- 사용자가 웹 사이트에 로그인한 상태
- 공격자가 해당 웹사이트로 악의적인 요청을 보내는 웹 페이지를 만들어 사용자가 해당 페이지를 열도록 유도
- 사용자가 페이지를 열면 로그인된 상태에서 악의적인 요청 전송
CSRF 방지
- CSRF 토큰 사용
- 사용자 세션에 임의의 값을 저장하여 모든 요청마다 해당 값을 포함하여 전송하도록 함
- 서버에서 요청을 받을 때마다 세션에 저장된 값과 요청으로 전송된 값이 일치하는지 검증
- Referer check
- HTTP 요청 헤더 정보에서 Referrer 정보를 확인하여 요청이 동일한 도메인에서 왔는지 검증
- SameSite
- 쿠키에 SameSite 속성을 설정하여 같은 사이트에서만 쿠키가 전송되도록 제한
- CAPTCHA
4. HTTPS, SSL
HTTPS와 SSL 인증서의 역할에 대해 설명해주세요
HTTPS
- HTTP 프로토콜을 사용하여 웹사이트와 브라우저간의 통신을 암호화하는 보안 프로토콜
SSL
- 웹사이트와 브라우저간의 통신을 암호화하기 위해 사용되는 디지털 인증서
SSL 동작 과정
- 클라이언트가 서버에 연결 요청을 보냄
- 서버는 SSL/TLS 인증서를 클라이언트에게 보냄
- 클라이언트는 인증서를 검증하고, 서버와 대칭키를 생성하여 데이터 암호화
- 암호화된 데이터 전송
SSL/TLS 인증서를 검증하는 과정 때문에 성능이 조금 떨어짐
5. JWT
JWT의 개념과 이를 사용한 인증 방식을 설명해주세요
JWT
- JSON Web Token
- JSON 객체를 사용하여 정보를 안전하게 전송하기 위한 개방형 표준
- 인증 및 정보 교환을 위한 토큰 기반 시스템 제공
- 인증과 권한 부여에 많이 사용됨
JWT 구조
- 헤더 : JWT가 어떤 알고리즘을 사용하여 서명되었는지에 대한 정보
- 페이로드 : 실제로 전송할 정보 포함, 사용자 정보나 권한에 대한 데이터
- 서명 : 헤더와 페이로드는 Base64로 인코딩 후 비밀 키를 사용해 서명
인증 과정
- 사용자 로그인 : 로그인 → 인증 후 JWT 발급
- API 요청 → JWT를 인증 헤더에 포함시켜 API 요청
- 서버 검증 → JWT의 서명 검증 후 요청 처리
장점
- 무상태성
- 자동화된 인증 처리
- 보안성
단점
- 토큰 만료되면 재로그인 해야함 → 리프레시 토큰 사용
- 토큰 크기가 큼