HTTP와 HTTPS의 차이점은 무엇인가요?
HTTP
는 암호화가추 가되지 않았기 때문에 보안에 취약한 반면, HTTPS
는 SSL(TLS)를 통해 안전하게 데이터를 주고받을 수 있다.
HTTP
- 웹 서버 및 웹 브라우저 상호 간의 데이터 전송을 위한 응용계층 프로토콜
- 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜
HTTPS
- HTTP에 데이터 암호화가 추가된 프로토콜
- SSL(TLS) 인증을 통해 HTTPS 암호화를 진행하고 발신자와 수신자만 해당 암호를 해독하여 정보를 주고 받을 수 있음
실제 HTTPS 연결 과정
- 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함
RESTful API에 대해 설명해보세요.
RESTful API
- 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
- REST 아키텍처 스타일을 따르는 API
REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있음
REST
- API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
Server-Client(서버-클라이언트 구조)
Stateless(무상태)
Cacheable(캐시 처리 가능)
Layered System(계층화)
Uniform Interface(인터페이스 일관성)
장점
확장성
REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있습니다.
유연성
RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원합니다.
애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상시킵니다.
독립성
API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있습니다.
또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있습니다.