쿠키는 클라이언트(브라우저)에 저장 및관리되는 데이터로, 사용자의 정보를 저장하고 웹사이트에 방문할 때 활용합니다.
세션은 서버 측에서 관리되는 데이터로, 사용자의 상태를 유지하기 위해서버에 저장되며, 일반적으로 사용자가 웹사이트를 떠나면 만료됩니다.
JWT토큰에 대해서 설명해주세요.
사용자 인증 정보JSON헤더/페이로드/서명서버-클라이언트 상태 유지자체 정보 포함
JWT (JSON Web Token)는 사용자 인증 정보를 안전하게 전송하기 위해 사용되는 JSON 기반 토큰입니다.
헤더, 페이로드, 서명으로 구성되어 있으며, 서버와 클라이언트 간의 상태를 유지하는 데 사용됩니다.
JWT에서 자체적으로 정보를 포함하고 있기 때문에 서버가 별도의 세션 저장소 없이도 인증을 처리할 수 있게 해줍니다.
JWT 프로세스
⭐️ SOP와 CORS에 대해서 설명해주세요.
출처서로 다른 출처 상호작용 제한특정 출처의 요청 HTTP 헤더를 통해 설정
SOP와 CORS 모두 출처와 관련된 개념입니다.
SOP (Same-Origin Policy)는 웹 브라우저의 보안 정책으로, 서로 다른 출처의 리소스 간의 상호작용을 제한하여 악성 공격을 방지합니다.
서로 다른 출처 = 도메인, 프로토콜, 포트
CORS (Cross-Origin Resource Sharing)는 SOP의 제한을 완화하는 메커니즘으로, 서버가 특정 출처의 요청을 허용할 수 있도록 HTTP 헤더를 통해 명시적으로 설정합니다. 이를 통해 안전하게 다른 출처의 리소스에 접근 가능합니다.
⭐️ REST에 대해서 설명해주세요. Restful API는 뭘까요?
웹 기반 아키텍처간단성일관성HTTP 메서드리소스 CRUD
REST (Representational State Transfer)는 웹 기반의 아키텍처로, 클라이언트와 서버 간의 통신을 간단하고 일관되게 하기 위한 원칙을 정의합니다.
RESTful API는 이러한 REST 원칙을 따르는 API로, HTTP 메서드를 사용하여 리소스에 대한 CRUD 작업을 수행합니다.
HTTP 메서드 = GET, POST, PUT, DELETE, PATCH 등
CRUD = Create, Read, Update, Delete
RESTful API는 무상태성이며 각 요청이 독립적으로 처리되어야 합니다.
⭐️ REST 제약 조건에 대해 설명해주세요.
클라이언트-서버구조무상태성캐시 가능성계층화된 시스템일관된 인터페이스리소스 기반
REST의 제약 조건에는 클라이언트-서버 구조, 무상태성, 캐시 가능성, 계층화된 시스템, 일관된 인터페이스, 리소스 기반이 있습니다.
클라이언트-서버 구조 : 클라이언트와 서버는 독립적으로 작동하며, 클라이언트는 사용자 인터페이스를, 서버는 데이터 저장 및 처리를 담당합니다.
무상태성 : 각 요청은 상태를 저장하지 않고독립적으로 처리됩니다.
캐시 가능성 : 응답은 캐시 가능하며 클라이언트는 이전 응답을 재사용할 수 있어 성능을 향상시킬 수 있습니다.
계층화된 시스템 : 클라이언트는 중간 서버를 통해 서버와 통신할 수 있어 보안성과 확장성을 높입니다.
중간 서버 = 프록시, 게이트웨이 등
일관된 인터페이스 : 리소스에 대한 접근 방식이 일관되어야 하며, 시스템의 단순성과 상호 운용성을 높입니다.
리소스 기반 : 모든 데이터는 리소스로 표현되며 각 리소스는 고유한 URI를 통해 식별됩니다.
URL, URI, URN 차이가 뭘까요?
자원의 위치자원의 이름자원 식별자
URL (Uniform Resource Locator)은 자원의 위치를 나타내며, 웹 주소를 포함합니다.
URI (Uniform Resource Identifier)는 자원을 식별하는 포괄적인 개념으로, URL과 URN을 포함합니다.
URN (Uniform Resource Name)은 자원의 이름을 고유하게 식별하지만, 위치 정보는 포함하지 않습니다.
URL, URN, URI 식별도
XSS 공격이 무엇이고, 방어하는 방법을 설명해주세요.
사이트간 스크립팅악성 스크립트세션 정보/개인 데이터 탈취입력 데이터 검증출력 데이터 인코딩
XSS (Cross Site Scripting) 공격은 악의적인 사용자가 웹 페이지에 악성 스크립트를 삽입하여 이 스크립트가 다른 사용자의 브라우저에서 실행하게 하는 공격입니다.
세션 정보, 개인 데이터 탈취 가능
방어 방법으로는 입력 데이터 검증, 출력 데이터 인코딩, 그리고 Content Security Policy(CSP) 설정이 있습니다. 이러한 방법을 통해 악성 스크립트의 실행을 차단할 수 있습니다.
CSP 작동 방식 = 출처 제한, 정책 정의, 위험 감소
CSRF 공격이 무엇이고, 방어하는 방법을 설명해주세요.
사이트간 요청 위조인증된 사용자의도하지 않은 요청CSRF 토큰요청 출처 확인
CSRF(Cross Site Request Forgery) 공격은 사용자가 인증된 세션을 이용해 의도하지 않은 요청을 보내는 공격입니다.
이를 방어하기 위해서는 CSRF 토큰을 사용하여 요청의 유효성을 검증하고, SameSite 쿠키 속성을 설정하여 쿠키가 다른 사이트에서 전송되지 않도록 제한하며, 요청의 출처를 확인하는 방법이 있습니다.
SQL Injection 공격이 무엇이고, 방어하는 방법을 설명해주세요.
악성 SQL 쿼리데이터베이스 조작정보 유출입력값 검증저장 프로시저 사용최소 권한 원칙
SQL Injection 공격은 악의적인 사용자가 SQL 쿼리에 악성 코드를 삽입하여 데이터베이스를 조작하거나 정보를 유출하는 공격입니다.
이를 방어하기 위해서는 사용자 입력을 철저히 검증하고, 저장 프로시저를 사용하여 쿼리를 안전하게 구성하며, 최소 권한 원칙을 적용하여 데이터베이스 접근 권한을 제한해야 합니다.
웹 캐시에 대해 설명해주세요.
웹 페이지/자원 저장서버 부하 감소페이지 로딩 속도 향상사용자 경험 개선
웹 캐시는 웹 페이지나 자원의 복사본을 저장하여 사용자가 요청할 때 빠르게 제공하는 시스템입니다.
정적 컨텐츠(이미지, JS 등)를 복사하여 특정 위치(클라이언트 PC)에 저장
이를 통해 서버의 부하를 줄이고, 페이지 로딩 속도를 향상시켜 사용자 경험을 개선합니다.
캐시는 브라우저 캐시, 프록시 캐시, CDN 등 다양한 형태로 구현될 수 있습니다.
브라우저 캐시
사용자의 웹 브라우저가 방문ㅎ나 웹 페이지의 자원을 저장하여, 다음에 같은 페이지를 요청할 때 서버에 다시 요청하지 않고 로컬에서 빠르게 불러오는 기능
프록시 캐시
클라이언트와 서버 사이에 위치한 중간 서버가 웹 자원의 복사본을 저장하는 방식. 여러 사용자가 동일한 자원을 요청할 때, 프록시 서버가 캐시된 데이터를 제공하여 서버의 부하를 줄이고 응답 속도를 높임
CDN(콘텐츠 전송 네트워크)
전 세계 여러 위치에 분산된 서버 네트워크로 사용자에게 가장 가까운 서버에서 웹 콘텐츠를 제공하여 로딩 시간을 단축시키는 시스템
프록시 서버에 대해서 설명해주세요.
중간 서버클라이언트의 요청 대신 처리IP주소 숨기기보안성능
프록시 서버는 클라이언트와 인터넷 사이에 위치하여 클라이언트의 요청을 대신 처리하는 중간 서버입니다.
이를 통해 사용자는 IP 주소를 숨기고, 웹 필터링 및 캐싱 기능을 활용할 수 있습니다.
또한, 보안과 성능 향상에 기여하며, 특정 콘텐츠에 대한 접근을 제어할 수 있습니다.
어디에 위치하고 어느 방향으로 데이터를 제공하는지에 따라 포워드 프록시와 리버스 프록시로 나뉩니다.
흔히 말하는 프록시 서버란 포워드 프록시 서버를 의미한다.
⭐️ 포워드 프록시에 대해서 설명해주세요.
클라이언트의 요청 처리
포워드 프록시는 클라이언트의 요청을 대신하여 인터넷에 접근하는 서버로, 주로 사용자의 IP 주소를 숨기고, 웹 필터링 및 캐싱 기능을 제공합니다.
웹 필터링 = 사용자가 접근할 수 있는 웹사이트, 콘텐츠 등을 제한하는 기능.
ex) 부적절한 콘텐츠 필터링
사용자가 특정 웹사이트에 접근할 때, 포워드 프록시가 요청을 처리하여 응답을 클라이언트에게 전달합니다.
포워드 프록시
⭐️ 리버스 프록시에 대해서 설명해주세요.
서버측에 위치로드밸런싱서버 성능 향상
리버스 프록시는 서버 측에 위치하여 클라이언트의 요청을 받아 여러 서버 중 하나로 전달하는 역할을 합니다.
주로 로드 밸런싱, SSL 종료, 캐싱 및 보안 기능을 제공하여 서버의 성능과 안정성을 향상시킵니다.
클라이언트는 리버스 프록시를 통해 여러 서버에 접근하는 것처럼 보입니다.
리버스 프록시
L7 로드 밸런서에 대해서 설명해주세요.
애플리케이션 계층HTTP/HTTPS트래픽 관리(요청 분산)웹 애플리케이션 성능 향상
L7 로드밸런서는 애플리케이션 계층에서 작동하는 로드밸런서로, HTTP/HTTPS 트래픽을 기반으로 요청을 분산합니다.
이를 통해 URL, 쿠키, 세션 정보 등을 분석하여 더 정교한 트래픽 관리와 최적화된 리소스 할당이 가능합니다.
L7 로드밸런서는 웹 애플리케이션의 성능과 가용성을 향상시키는 데 중요한 역할을 합니다.
커넥션 타임아웃과 리드 타임아웃에 대해 설명해주세요.
클라이언트-서버 연결 최대시간서버가 응답을 보내는 데 걸리는 최대 시간
커넥션 타임아웃은 클라이언트와 서버 간의 연결을 설정하는 데 걸리는 최대 시간을 지정하며, 이 시간이 초과되면 연결이 실패합니다.
리드 타임아웃은 이미 설정된 연결에서 서버가 응답을 보내는 데 걸리는 최대 시간을 의미하며, 이 시간이 지나면 클라이언트는 요청을 중단합니다.