[CS]예상 질문 정리

박민하·2022년 9월 17일
0

CS

목록 보기
1/4
post-thumbnail

🍳 JWT

JWT란 무엇인지 설명해주세요.

jWT(Jason Web Token)란 인증정보를 암호화시킨 토큰을 말합니다.

이 토큰은 HTTP 헤더 또는 쿠키에 담아서 요청한 클라이언트에게 전달합니다.

JWT 토큰을 사용하는 이유를 설명해주세요.

토큰은 세션처럼 별도의 저장소 관리가 필요하지 않고, 토큰 전송 후 검증하는 과정만 있으면 되어 간편합니다.

발급된 JWT는 삭제가 불가능해 보안에 취약하다는 단점이 있지만 Refresh Token을 사용하면 보완이 가능합니다.

Refresh Token이 무엇인지 설명해주세요.

토큰의 유효기간을 짧게해서 보안을 높이고, 토큰 재발급도 빨라 편의성이 높은 JWT입니다.

🍳 쿠키&세션

쿠키와 세션을 사용하는 이유가 무엇인가요?

웹 서버는 응답을 받으면 연결이 끊어지는 stateless한 성질 가지고 있습니다.

이런 서버의 특성을 보완하여 서버의 상태를 계속적으로 유지하기 위해서 사용됩니다.

🍳 디자인 패턴

MVC 특징과 각 구성요소의 역할을 간략히 설명해주세요.

MVC는 Model View Controller의 약자로, 소프트웨어 설계에 관련된 디자인 패턴입니다.

Model은 데이터와 데이터를 처리하는 부분으로, 자료를 정의하거나 데이터베이스를 다루는 등의 역할을 하고 컨트롤러에 데이터를 전달하는 역할을 합니다.

View는 화면을 구성하는 UI 부분으로, 이벤트가 일어나면 컨트롤러에 이벤트와 데이터 등을 전달하는 역할을 합니다.

Controller는 사용자 입력을 실제로 처리하는 부분으로, View에서 온 액션, 이벤트를 받고 데이터를 변경해야 한다면 Model에 이를 전달합니다. Model에서 받은 데이터를 View에게 전달해 데이터를 나타내도록 지시합니다.

🍳 Rest API

Rest API란 무엇인지 설명해주세요.

REST(REpresentational State Transfer)란 http의 url과 HTTP method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐(framework)입니다.

RESTful API는 REST 특징을 지키면서 API를 제공한다는 의미입니다.

  • 하나의 URL로 4가지의 HTTP method를 전송할 수 있다.
  • 웹에 존재하는 모든 자원(resource, ex. 이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에 대한 주소를 지정한다.

어떻게 하면 REST API를 좀 더 RESTful 하게 설계할 수 있을까요?

참고: https://library.gabia.com/contents/8339/

  • 마지막에 / 포함하지 않는다.
  • _(underbar) 대신 -(dash)를 사용한다.
  • 소문자를 사용한다.
  • 행위(method)는 URL에 포함하지 않는다.
  • 컨트롤 자원을 의미하는 URL 예외적으로 동사를 허용한다.

🍳 ORM

ORM이란 무엇인지 간략히 설명해주세요.

ORM(Object Relational Mapping)이란 객체와 데이터를 매핑해줌으로써 파이썬과 데이터베이스가 서로 소통할 수 있게 해주는 것을 말합니다.
Django에서 Model이 데이터 구조를 잡아주고, 이 구조로 데이터베이스와 소통하는 ORM 기능을 제공합니다.

ORM의 장단점을 설명해주세요.

ORM은 SQL 쿼리문을 사용하지 않고 객체지향적인 코드로 데이터를 다둘 수 있어서 개발자 입장에서 편합니다.
ORM은 독립적으로 작성되어있기 때문에 DBMS에 대한 종속성이 줄어들어 데이터베이스에 문제가 생겨도 직접적인 영향을 받지 않습니다.
단, 서비스가 복잡할수록 ORM만으로 서비스를 구현하기 어렵다는 단점이 있습니다.

🍳 CORS

CORS는 무엇인가요?

CORS(Cross Origin Resource Sharing)란 웹 서버가 다른 출처(origin)의 리소스에 접근할 수 있도록 권한을 부여하는 것을 말합니다.
브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한하기 때문에, 요청 전에 서 서버의 동의가 필요합니다. 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절하는 메커니즘을 CORS(Cross-Origin Resource Sharing)라고 합니다.

출처(Origin)란 무엇인가요?

서버의 위치를 의미하는 URL(https://google.com)의 구성 요소 중 프로토콜, 도메인, 포트번호를 말합니다.

  • 프로토콜(Protocol): http와 https는 프로토콜이 다르다.
  • 도메인(Host): domain.com과 other-domain.com은 다르다.
  • 포트 번호(Port): 8080포트와 3000포트는 다르다.

같은 출처와 다른 출처는 어떻게 구분하나요?

두 URL의 구성 요소 중 프로토콜, 호스트, 포트 3가지만 동일하면 같은 출처라고 봅니다.

CORS는 왜 필요한가요?

CORS가 없이 모든 곳에서 데이터를 요청할 수 있게 되면, 다른 사이트에서 원래 사이트를 흉내낼 수 있게 됩니다.

기존 사이트와 완전히 동일하게 동작하게 되면 사용자가 로그인을 하도록 만들고, 로그인했던 세션을 탈취하여 악의적으로 정보를 추출하거나 다른 사람의 정보를 입력하는 등 공격을 할 수 있게 됩니다.

이렇게 공격을 할 수 없도록 브라우저에서 보호하고, 필요한 경우에만 서버와 협의하여 요청할 수 있도록 하기 위해서 필요합니다.

profile
backend developer 🐌

0개의 댓글